Självstudie: Strömma stordata till ett informationslager
Azure Event Grid är en intelligent tjänst för händelsedirigering som gör att du kan reagera på meddelanden eller händelser från appar och tjänster. Den kan till exempel utlösa en Azure-funktion för att bearbeta Event Hubs data som samlas in till en Blob Storage eller Data Lake Storage. Det här exemplet visar hur du använder Event Grid och Azure Functions för att migrera avbildade Event Hubs-data från Blob Storage till Azure Synapse Analytics, särskilt en dedikerad SQL-pool.
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 skapas en händelse som skickas till ett Azure-händelserutnät.
- Händelserutnätet vidarebefordrar händelsedatan 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 infångade data i Azure Synapse Analytics
Förutsättningar
Du behöver följande för att kunna slutföra den här självstudiekursen:
- En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- Visual Studio 2019 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 exempel på vindturbindata till en händelsehubb som aktiverats för avskiljning
- FunctionDWDumper – en Azure-funktion som tar emot ett Event Grid-meddelande när en Avro-fil hämtas till blob-lagring i Azure Storage. Den tar emot blobens URI-sökväg, läser innehållet och push-erar 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 i Cloud Shell ser ett alternativ för att välja mellan Bash och PowerShell, väljer du Bash.
Om du använder Cloud Shell för första gången, skapar du ett lagringskonto genom att välja Skapa lagring. Det måste finnas ett Azure-lagringskonto i Azure Cloud Shell för att vissa filer ska kunna lagras.
Vänta tills Cloud Shell har initierats.
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 rgDataMigrationTryck 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, functions-app Azure Synapse Analytics) genom att köra följande CLI-kommando:
Kopiera och klistra in kommandot i Cloud Shell-fönstret. Alternativt kan du kopiera och klistra in i ett redigeringsprogram, ange värden och sedan kopiera kommandot till Cloud Shell.
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 en stund eftersom du skapar många resurser. Kontrollera att det inte finns några fel i kommandoresultatet.
Stäng Cloud Shell genom att Cloud Shell knappen Cloud Shell i portalen (eller) X-knappen i det övre högra hörnet 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
Skapa en tabell i informationslagret genom att köra skriptet CreateDataWarehouseTable.sql. Du kan köra skriptet med Visual Studio eller Frågeredigeraren i portalen. Följande steg visar hur du använder Frågeredigeraren:
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 ge klienten åtkomst till SQL-servern följer du dessa steg:
- Välj länken: Ange serverns brandvägg.
- På sidan Brandväggsinställningar väljer du Lägg till klient-IP i verktygsfältet och väljer sedan Spara i verktygsfältet.
- Välj OK i meddelandet om att det lyckades.
- Gå tillbaka till sidan Dedikerad SQL-pool och välj Frågeredigeraren (förhandsversion) på den vänstra menyn.
- Ange användare och lösenord och välj 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.
Uppdatera funktionskörningsversionen
Öppna en annan flik i webbläsaren och gå till Azure Portal.
I Azure Portal väljer du Resursgrupper i den vänstra menyn.
Välj den resursgrupp där funktionsappen finns.
Välj funktionsappen i listan över resurser i resursgruppen.
Välj Konfiguration under Inställningar på den vänstra menyn.
Växla till fliken Funktionskörningsinställningar i den högra rutan.
Uppdatera körningsversionen till ~3.
Välj Spara i verktygsfältet.
I popup-rutan Spara bekräftelse av ändringar väljer du Fortsätt.
Publicera Azure 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/EventHubsCaptureEventGridDemomappen .I Solution Explorer högerklickar du på FunctionEGDWDumper-projektet och väljer Publicera.
Om du ser följande skärm väljer du Starta.
I dialogrutan Publicera väljer du Azure för Mål och sedan Nästa.
Välj Azure-funktionsapp (Windows) och välj Nästa.
På fliken Functions-instans väljer du din Azure-prenumeration, expanderar resursgruppen och väljer funktionsappen. Välj sedan Slutför. Du måste logga in på ditt Azure-konto om du inte redan har gjort det.
På sidan Publicera går du till avsnittet Tjänstberoenden och väljer Konfigurera för Lagring.
På sidan Konfigurera beroende följer du dessa steg:
välj det lagringskonto som du skapade tidigare och välj sedan Nästa.
Ange ett namn för anslutningssträngen och välj Ingen för alternativet Spara anslutningssträng och välj sedan Nästa.
Rensa C#-kodfilen och lagringsalternativet Hemligheter och välj sedan Slutför.
När profilen har konfigurerats i Visual Studio väljer du Publicera.
På fliken där Sidan Azure-funktion är öppen väljer du Funktioner på den vänstra menyn. Bekräfta att funktionen EventGridTriggerMigrateData visas i listan. Om du inte ser den 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
I en ny flik eller ett nytt fönster med en webbläsare går du till Azure Portal.
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å Event Hubs namnområde väljer du Händelser på den vänstra menyn och sedan + Händelseprenumeration i verktygsfältet.
På sidan Skapa händelseprenumeration följer du dessa steg:
Ange ett namn för händelseprenumerationen.
Ange ett namn för systemämnet. Ett systemämne tillhandahåller en slutpunkt som avsändaren kan skicka händelser till. Mer information finns i Systemämnen
För Slutpunktstyp väljer du Azure Function.
För Slutpunkt väljer du länken .
På sidan Välj Azure-funktion följer du dessa steg om de inte fylls i automatiskt.
- Välj den Azure-prenumeration som har Azure-funktionen.
- Välj resursgrupp för funktionen.
- Välj funktionsappen.
- Välj distributionsfacket.
- Välj funktionen EventGridTriggerMigrateData.
På sidan Välj Azure-funktion väljer du Bekräfta val.
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.
Välj App Service plan (inte App Service) i listan över resurser i resursgruppen.
Kör appen för att generera data
Du har slutfört konfiguration av 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 Set as Startup project (Ange som startprojekt).
Gå till projektet WindTurbineDataGenerator och öppna program.cs.
Ersätt
<EVENT HUBS NAMESPACE CONNECTION STRING>med anslutningssträngen som du kopierade från portalen.Ersätt
<EVENT HUB NAME>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 WindTurbineGenerator.exe program.
Efter några minuter går du till den andra webbläsarfliken där frågefönstret är öppet och frågar tabellen i informationslagret efter migrerade data.
select * from [dbo].[Fact_WindTurbineMetrics]
Övervaka lösningen
Det här avsnittet hjälper dig med övervakning eller felsökning av lösningen.
Visa infångade 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 Storage Explorer (förhandsversion) på den vänstra menyn.
Expandera BLOBCONTAINRAR och välj windturbinecapture.
Öppna mappen med samma namn som Event Hubs namnområdet i den högra rutan.
Öppna mappen med samma namn som din händelsehubb (hubdatamigration).
Detaljgranska mapparna så ser du AVRO-filerna. Här är ett exempel:
Kontrollera att Event Grid anropade funktionen
Gå till resursgruppen och välj funktionsappen.
Välj Funktioner på den vänstra menyn.
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. Om inte 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 se 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
fileUrlidata-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
- Läs om skillnaderna mellan Azures meddelandetjänster i Välj mellan Azure-tjänster som levererar meddelanden.
- En introduktion till Event Grid finns i Om Event Grid.
- En introduktion till Event Hubs Capture finns i Enable Event Hubs Capture using the Azure portal (Aktivera Event Hubs Capture med hjälp av Azure Portal).
- Mer information om hur du konfigurerar och kör exemplet finns i Event Hubs Capture- och Event Grid-exemplet.