Självstudie: Migrera Event Hubs-insamlade data från Azure Storage till Azure Synapse Analytics med hjälp av Azure Event Grid och Azure Functions
I den här självstudien migrerar du Event Hubs-insamlade data från Azure Blob Storage till Azure Synapse Analytics, särskilt en dedikerad SQL-pool, med hjälp av Azure Event Grid och Azure Functions.
Diagrammet visar arbetsflödet för lösningen som du skapar i självstudien:
- Data som skickas till en Azure-händelsehubb samlas i en Azure-blobblagring.
- När datainsamlingen är klar genereras en händelse och skickas till Azure Event Grid.
- Azure Event Grid vidarebefordrar dessa händelsedata till en Azure-funktionsapp.
- Funktionsappen använder blobb-URL:en i händelsedatan till att hämta blobben från lagringen.
- Funktionsappen migrerar blobdata till en Azure Synapse Analytics.
I den här självstudien gör du följande:
- Distribuera den infrastruktur som krävs för självstudien
- Publicera kod till en Functions-app
- Skapa en Event Grid-prenumeration
- Strömma exempeldata till Event Hubs
- Verifiera insamlade data i Azure Synapse Analytics
Förutsättningar
Du behöver följande för att kunna slutföra den här självstudiekursen:
- Den här artikeln förutsätter att du är bekant med Event Grid och Event Hubs (särskilt capture-funktionen). Om du inte är bekant med Azure Event Grid kan du läsa Introduktion till Azure Event Grid. Mer information om capture-funktionen i Azure Event Hubs finns i Avbilda händelser via Azure Event Hubs i Azure Blob Storage eller Azure Data Lake Storage.
- En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- Visual Studio med arbetsbelastningar för: .NET-skrivbordsutveckling, Azure-utveckling, ASP.NET och webbutveckling, Node.js utveckling och Python-utveckling.
- Ladda ned exempelprojektet EventHubsCaptureEventGridDemo till din dator.
- WindTurbineDataGenerator – en enkel utgivare som skickar exempeldata från vindkraftverk till en händelsehubb med funktionen Capture aktiverad.
- FunctionDWDumper – en Azure-funktion som tar emot ett meddelande från Azure Event Grid när en Avro-fil registreras i Azure Storage-bloben. Den tar emot blobens URI-sökväg, läser dess innehåll och skickar dessa data till Azure Synapse Analytics (dedikerad SQL-pool).
Distribuera infrastrukturen
I det här steget distribuerar du den infrastruktur som krävs med en Resource Manager-mall. När du distribuerar mallen skapas följande resurser:
- Händelsehubb med Capture-funktionen aktiverad.
- Lagringskonto för hämtade filer.
- Apptjänstplan som är värd för funktionsappen
- Funktionsapp för bearbetning av händelsen
- SQL Server som värd för informationslagret
- Azure Synapse Analytics (dedikerad SQL-pool) för lagring av migrerade data
Använda Azure CLI för att distribuera infrastrukturen
Logga in på Azure-portalen.
Välj Cloud Shell-knappen överst.
Du ser att Cloud Shell öppnas längst ned i webbläsaren.
- Om du använder Cloud Shell för första gången:
I Cloud Shell väljer du Bash enligt bilden ovan, om den inte redan är markerad.
Skapa en Azure-resursgrupp genom att köra följande CLI-kommando:
Kopiera och klistra in följande kommando i Cloud Shell-fönstret. Ändra resursgruppens namn och plats om du vill.
az group create -l eastus -n rgDataMigration
Tryck på RETUR.
Här är ett exempel:
user@Azure:~$ az group create -l eastus -n rgDataMigration { "id": "/subscriptions/00000000-0000-0000-0000-0000000000000/resourceGroups/rgDataMigration", "location": "eastus", "managedBy": null, "name": "rgDataMigration", "properties": { "provisioningState": "Succeeded" }, "tags": null }
Distribuera alla resurser som nämns i föregående avsnitt (händelsehubb, lagringskonto, funktionsapp, Azure Synapse Analytics) genom att köra följande CLI-kommando:
Kopiera och klistra in kommandot i Cloud Shell-fönstret. Du kan också kopiera/klistra in i valfri redigerare, ange värden och sedan kopiera kommandot till Cloud Shell. Om du ser ett fel på grund av ett Azure-resursnamn tar du bort resursgruppen, åtgärdar namnet och försöker sedan igen.
Viktigt!
Ange värden för följande entiteter innan du kör kommandot:
- Namn på den resursgrupp som du skapade tidigare.
- Namn på händelsehubbens namnområde.
- Namn på händelsehubben. Du kan lämna värdet som det är (hubdatamigration).
- Namn på SQL-servern.
- Namn på SQL-användaren och lösenordet.
- Namnet på databasen.
- Namn på lagringskontot.
- Namn på funktionsappen.
az deployment group create \ --resource-group rgDataMigration \ --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/event-grid/EventHubsDataMigration.json \ --parameters eventHubNamespaceName=<event-hub-namespace> eventHubName=hubdatamigration sqlServerName=<sql-server-name> sqlServerUserName=<user-name> sqlServerPassword=<password> sqlServerDatabaseName=<database-name> storageName=<unique-storage-name> functionAppName=<app-name>
Tryck på Retur-tangenten i Cloud Shell-fönstret för att köra kommandot. Den här processen kan ta ett tag eftersom du skapar en massa resurser. Kontrollera att det inte finns några fel i kommandoresultatet.
Stäng Cloud Shell genom att välja knappen Cloud Shell i portalen (eller) X-knappen i det övre högra hörnet i Cloud Shell-fönstret.
Kontrollera att resurserna har skapats
I Azure Portal väljer du Resursgrupper i den vänstra menyn.
Filtrera listan över resursgrupper genom att ange namnet på resursgruppen i sökrutan.
Välj din resursgrupp i listan.
Kontrollera att du ser följande resurser i resursgruppen:
Skapa en tabell i Azure Synapse Analytics
I det här avsnittet skapar du en tabell i den dedikerade SQL-pool som du skapade tidigare.
I listan över resurser i resursgruppen väljer du din dedikerade SQL-pool.
På sidan Dedikerad SQL-pool går du till avsnittet Vanliga uppgifter på den vänstra menyn och väljer Frågeredigeraren (förhandsversion).
Ange namnet på användare och lösenord för SQL-servern och välj OK. Om du ser ett meddelande om att tillåta att klienten får åtkomst till SQL-servern väljer du Tillåtlista IP-adress <för DIN IP-adress> på servern <din SQL-server> och väljer sedan OK.
Kopiera och kör följande SQL-skript i frågefönstret:
CREATE TABLE [dbo].[Fact_WindTurbineMetrics] ( [DeviceId] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [MeasureTime] datetime NULL, [GeneratedPower] float NULL, [WindSpeed] float NULL, [TurbineSpeed] float NULL ) WITH (CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = ROUND_ROBIN);
Låt den här fliken eller fönstret vara öppet så att du kan kontrollera att data har skapats i slutet av självstudien.
Publicera Azure Functions-appen
Hämta först publiceringsprofilen för Functions-appen från Azure-portalen. Använd sedan publiceringsprofilen för att publicera Azure Functions-projektet eller appen från Visual Studio.
Hämta publiceringsprofilen
På sidan Resursgrupp väljer du Azure Functions-appen i listan över resurser.
På sidan Funktionsapp för din app väljer du Hämta publiceringsprofil i kommandofältet.
Ladda ned och spara filen i undermappen FunctionEGDDumper i mappen EventHubsCaptureEventGridDemo .
Använda publiceringsprofilen för att publicera Functions-appen
Starta Visual Studio.
Öppna lösningen EventHubsCaptureEventGridDemo.sln som du laddade ned från GitHub som en del av förutsättningarna. Du hittar den i
/samples/e2e/EventHubsCaptureEventGridDemo
mappen .I Istraživač rešenja högerklickar du på FunctionEGDWDumper-projektet och väljer Publicera.
På följande skärm väljer du Start eller Lägg till en publiceringsprofil.
I dialogrutan Publicera väljer du Importera profil för Mål och väljer Nästa.
På fliken Importera profil väljer du den fil för publiceringsinställningar som du sparade tidigare i mappen FunctionEGDWDumper och väljer sedan Slutför.
När profilen har konfigurerats i Visual Studio väljer du Publicera. Bekräfta att publiceringen lyckades.
I webbläsaren där sidan Azure-funktion är öppen väljer du Funktioner i det mellersta fönstret. Bekräfta att funktionen EventGridTriggerMigrateData visas i listan. Om du inte ser det kan du försöka publicera från Visual Studio igen och sedan uppdatera sidan i portalen.
När du har publicerat funktionen är du redo att prenumerera på händelsen.
Prenumerera på händelsen
Logga in på Azure-portalen på en ny flik eller ett nytt fönster i en webbläsare.
I Azure Portal väljer du Resursgrupper i den vänstra menyn.
Filtrera listan över resursgrupper genom att ange namnet på resursgruppen i sökrutan.
Välj din resursgrupp i listan.
Välj Event Hubs-namnområdet i listan över resurser.
På sidan Event Hubs-namnområde väljer du Händelser på den vänstra menyn och väljer sedan + Händelseprenumeration i verktygsfältet.
Följ dessa steg på sidan Skapa händelseprenumeration :
Ange ett namn för händelseprenumerationen.
Ange ett namn för systemämnet. Ett systemavsnitt innehåller en slutpunkt där avsändaren kan skicka händelser. Mer information finns i Systemavsnitt
För Slutpunktstyp väljer du Azure-funktion.
För Slutpunkt väljer du länken.
På sidan Välj Azure-funktion följer du de här stegen om de inte fylls i automatiskt.
- Välj den Azure-prenumeration som har Azure-funktionen.
- Välj resursgruppen för funktionen.
- Välj funktionsappen.
- Välj distributionsfacket.
- Välj funktionen EventGridTriggerMigrateData.
På sidan Välj Azure-funktion väljer du Bekräfta markering.
Gå sedan tillbaka till sidan Skapa händelseprenumeration och välj Skapa.
Kontrollera att händelseprenumerationen har skapats. Växla till fliken Händelseprenumerationer på sidan Händelser för Event Hubs-namnområdet.
Kör appen för att generera data
Du har konfigurerat din händelsehubb, dedikerat SQL-pool (tidigare SQL Data Warehouse), Azure-funktionsapp och händelseprenumeration. Innan du kör ett program som genererar data för händelsehubben måste du konfigurera några värden.
Gå till resursgruppen som du gjorde tidigare i Azure Portal.
Välj Event Hubs-namnområde.
På sidan Event Hubs-namnområde väljer du Principer för delad åtkomst i den vänstra menyn.
Välj RootManageSharedAccessKey i listan med principer.
Välj kopieringsknappen intill textrutan Primärnyckel för anslutningssträng.
Gå tillbaka till Visual Studio-lösningen.
Högerklicka på Projektet WindTurbineDataGenerator och välj Ange som startprojekt.
Öppna program.cs i projektet WindTurbineDataGenerator.
Ersätt
<EVENT HUBS NAMESPACE CONNECTION STRING>
med niska veze du kopierade från portalen.Om du har använt ett annat namn för händelsehubben än
hubdatamigration
ersätter<EVENT HUB NAME>
du med namnet på händelsehubben.private const string EventHubConnectionString = "Endpoint=sb://demomigrationnamespace.servicebus.windows.net/..."; private const string EventHubName = "hubdatamigration";
Skapa lösningen. Kör programmet WindTurbineGenerator.exe.
Efter ett par minuter, på den andra webbläsarfliken där du har frågefönstret öppet, frågar du tabellen i informationslagret efter migrerade data.
select * from [dbo].[Fact_WindTurbineMetrics]
Viktigt!
Vi använder niska veze för att autentisera till Azure Event Hubs-namnområdet för att hålla självstudien enkel. Vi rekommenderar att du använder Microsoft Entra ID-autentisering i produktionsmiljöer. När du använder ett program kan du aktivera hanterad identitet för programmet och tilldela identiteten en lämplig roll (Azure Event Hubs-ägare, Azure Event Hubs Data Sender eller Azure Event Hubs Data Receiver) på Event Hubs-namnområdet. Mer information finns i Auktorisera åtkomst till Event Hubs med hjälp av Microsoft Entra-ID.
Övervaka lösningen
Det här avsnittet hjälper dig att övervaka eller felsöka lösningen.
Visa insamlade data i lagringskontot
Gå till resursgruppen och välj det lagringskonto som används för att samla in händelsedata.
På sidan Lagringskonto väljer du Lagringswebbläsare på den vänstra menyn.
Expandera BLOBCONTAINRAR och välj windturbinecapture.
Öppna mappen med namnet samma som Event Hubs-namnområdet i den högra rutan.
Öppna mappen med namnet samma som din händelsehubb (hubdatamigration).
Granska mapparna så ser du AVRO-filerna. Här är ett exempel:
Kontrollera att Event Grid-utlösaren anropade funktionen
Gå till resursgruppen och välj funktionsappen.
Välj fliken Funktioner i det mellersta fönstret.
Välj funktionen EventGridTriggerMigrateData i listan.
På sidan Funktion väljer du Övervaka på den vänstra menyn.
Välj Konfigurera för att konfigurera application insights för att samla in anropsloggar.
Skapa en ny Application Insights-resurs eller använd en befintlig resurs.
Gå tillbaka till sidan Övervaka för funktionen.
Bekräfta att klientprogrammet (WindTurbineDataGenerator) som skickar händelserna fortfarande körs. Annars kör du appen.
Vänta några minuter (5 minuter eller mer) och välj knappen Uppdatera för att se funktionsanrop.
Välj ett anrop för att visa information.
Event Grid distribuerar händelsedata till prenumeranterna. I följande exempel visar genererade händelsedata när data som strömmas via en händelsehubb hämtas i en blobb. Observera särskilt att egenskapen
fileUrl
idata
-objektet pekar på blobben i lagringen. Funktionsappen använder den här URL:en för att hämta blobbfilen med insamlade data.{ "topic": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/rgDataMigration/providers/Microsoft.EventHub/namespaces/spehubns1207", "subject": "hubdatamigration", "eventType": "Microsoft.EventHub.CaptureFileCreated", "id": "4538f1a5-02d8-4b40-9f20-36301ac976ba", "data": { "fileUrl": "https://spehubstorage1207.blob.core.windows.net/windturbinecapture/spehubns1207/hubdatamigration/0/2020/12/07/21/49/12.avro", "fileType": "AzureBlockBlob", "partitionId": "0", "sizeInBytes": 473444, "eventCount": 2800, "firstSequenceNumber": 55500, "lastSequenceNumber": 58299, "firstEnqueueTime": "2020-12-07T21:49:12.556Z", "lastEnqueueTime": "2020-12-07T21:50:11.534Z" }, "dataVersion": "1", "metadataVersion": "1", "eventTime": "2020-12-07T21:50:12.7065524Z" }
Kontrollera att data lagras i den dedikerade SQL-poolen
På webbläsarfliken där frågefönstret är öppet frågar du tabellen i din dedikerade SQL-pool efter migrerade data.
Nästa steg
- Mer information om hur du konfigurerar och kör exemplet finns i Event Hubs Capture- och Event Grid-exemplet.
- I den här självstudien skapade du en händelseprenumeration för
CaptureFileCreated
händelsen. Mer information om den här händelsen och alla händelser som stöds av Azure Blob Storage finns i Azure Event Hubs som en Event Grid-källa. - Mer information om funktionen Event Hubs Capture finns i Avbilda händelser via Azure Event Hubs i Azure Blob Storage eller Azure Data Lake Storage.