Kurz: Migrace zachycených dat služby Event Hubs ze služby Azure Storage do Azure Synapse Analytics pomocí Azure Event Gridu a Azure Functions
V tomto kurzu provedete migraci služby Event Hubs zachycená data ze služby Azure Blob Storage do Služby Synapse Analytics, konkrétně vyhrazeného fondu SQL, pomocí Azure Event Gridu a Azure Functions.
Tento diagram znázorňuje pracovní postup řešení, které vytvoříte v tomto kurzu:
- Data odesílaná do centra událostí Azure se zaznamenávají v úložišti objektů blob v Azure.
- Po dokončení zachytávání dat se vygeneruje a odešle událost do služby Azure Event Grid.
- Azure Event Grid předává tato data událostí do aplikace funkcí Azure.
- Aplikace funkcí používá adresu URL objektu blob v datech události k načtení objektu blob z úložiště.
- Aplikace funkcí migruje data objektů blob do služby Azure Synapse Analytics.
V tomto článku provedete následující kroky:
- Nasazení požadované infrastruktury pro kurz
- Publikování kódu do aplikace Functions
- Vytvoření odběru Event Gridu
- Streamování ukázkových dat do služby Event Hubs
- Ověření zachycených dat ve službě Azure Synapse Analytics
Požadavky
K dokončení tohoto kurzu potřebujete:
- Tento článek předpokládá, že jste obeznámeni se službou Event Grid a Event Hubs (zejména funkcí Capture). Pokud službu Azure Event Grid neznáte, přečtěte si téma Úvod do služby Azure Event Grid. Další informace o funkci Capture služby Azure Event Hubs najdete v tématu Zachycení událostí prostřednictvím služby Azure Event Hubs ve službě Azure Blob Storage nebo Azure Data Lake Storage.
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
- Visual Studio s úlohami pro: vývoj desktopových aplikací .NET, vývoj pro Azure, ASP.NET a vývoj pro web, vývoj Node.js a vývoj v Pythonu.
- Stáhněte si ukázkový projekt EventHubsCaptureEventGridDemo do počítače.
- WindTurbineDataGenerator – jednoduchý vydavatel, který odesílá ukázková data větrné turbíny do centra událostí s povolenou funkcí Capture.
- FunctionDWDumper – funkce Azure, která obdrží oznámení z Azure Event Gridu při zachycení souboru Avro do objektu blob služby Azure Storage. Obdrží cestu URI objektu blob, přečte její obsah a nasdílí tato data do Azure Synapse Analytics (vyhrazený fond SQL).
Nasazení infrastruktury
V tomto kroku nasadíte požadovanou infrastrukturu pomocí šablony Resource Manageru. Při nasazení šablony se vytvoří následující prostředky:
- Centrum událostí s povolenou funkcí Capture
- Účet úložiště pro zachycené soubory.
- Plán služby App Service pro hostování aplikace funkcí
- Aplikace Function App na zpracování události
- SQL Server na hostování datového skladu
- Azure Synapse Analytics (vyhrazený fond SQL) pro ukládání migrovaných dat
Nasazení infrastruktury pomocí Azure CLI
Přihlaste se k portálu Azure.
Nahoře vyberte tlačítko Cloud Shellu .
V dolní části prohlížeče se otevře Cloud Shell.
V Cloud Shellu vyberte Bash , jak je znázorněno na obrázku výše, pokud ještě není vybraný.
Vytvořte skupinu prostředků Azure spuštěním následujícího příkazu rozhraní příkazového řádku:
Zkopírujte a vložte následující příkaz do okna Cloud Shellu. Pokud chcete, změňte název a umístění skupiny prostředků.
az group create -l eastus -n rgDataMigration
Stiskněte ENTER.
Tady je příklad:
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 }
Nasaďte všechny prostředky uvedené v předchozí části (centrum událostí, účet úložiště, aplikace functions, Azure Synapse Analytics) spuštěním následujícího příkazu rozhraní příkazového řádku:
Zkopírujte a vložte příkaz do okna Cloud Shellu. Alternativně můžete zkopírovat nebo vložit do editoru podle vašeho výběru, nastavit hodnoty a pak příkaz zkopírovat do Cloud Shellu. Pokud se zobrazí chyba z důvodu názvu prostředku Azure, odstraňte skupinu prostředků, opravte název a zkuste příkaz zopakovat.
Důležité
Před spuštěním příkazu zadejte hodnoty následujících entit:
- Název skupiny prostředků, kterou jste vytvořili dříve
- Název oboru názvů centra událostí
- Název centra událostí Hodnotu můžete ponechat tak, jak je (hubdatamigration).
- Název serveru SQL
- Název uživatele a hesla SQL.
- Název databáze.
- Název účtu úložiště.
- Název aplikace funkcí
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>
Stisknutím klávesy ENTER v okně Cloud Shellu spusťte příkaz. Tento proces může chvíli trvat, protože vytváříte spoustu prostředků. V důsledku příkazu se ujistěte, že nedošlo k žádným selháním.
Cloud Shell zavřete tak , že v pravém horním rohu okna Cloud Shellu vyberete tlačítko Cloud Shell na portálu (nebo) X .
Ověřte, že se prostředky vytvořily.
Na webu Azure Portal vyberte v nabídce vlevo skupiny prostředků.
Vyfiltrujte seznam skupin prostředků zadáním názvu skupiny prostředků do vyhledávacího pole.
V seznamu vyberte skupinu prostředků.
Ověřte, že ve skupině prostředků vidíte následující prostředky:
Vytvoření tabulky ve službě Azure Synapse Analytics
V této části vytvoříte tabulku ve vyhrazeném fondu SQL, který jste vytvořili dříve.
V seznamu prostředků ve skupině prostředků vyberte vyhrazený fond SQL.
Na stránce Vyhrazený fond SQL v části Běžné úlohy v nabídce vlevo vyberte Editor dotazů (Preview).
Zadejte uživatelské jméno a heslo pro SQL server a vyberte OK. Pokud se zobrazí zpráva o povolení přístupu klienta k SERVERU SQL, vyberte IP adresu seznamu povolených IP <adres> na serveru <SQL a> pak vyberte OK.
V okně dotazu zkopírujte a spusťte následující skript SQL:
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);
Nechte tuto kartu nebo okno otevřené, abyste mohli ověřit, že jsou data vytvořená na konci kurzu.
Publikování aplikace Azure Functions
Nejprve získejte profil publikování aplikace Functions z webu Azure Portal. Pak pomocí profilu publikování publikujte projekt nebo aplikaci Azure Functions ze sady Visual Studio.
Získání profilu publikování
Na stránce Skupina prostředků vyberte v seznamu prostředků aplikaci Azure Functions.
Na stránce Aplikace funkcí pro vaši aplikaci vyberte Na panelu příkazů možnost Získat profil publikování.
Stáhněte a uložte soubor do podsložky FunctionEGDDumper složky EventHubsCaptureEventGridDemo.
Použití profilu publikování k publikování aplikace Functions
Spusťte Visual Studio.
V rámci požadavků otevřete řešení EventHubsCaptureEventGridDemo.sln, které jste stáhli z GitHubu. Najdete ho
/samples/e2e/EventHubsCaptureEventGridDemo
ve složce.V Průzkumník řešení klepněte pravým tlačítkem na functionEGDWDumper projekt a vyberte Publikovat.
Na následující obrazovce vyberte Start nebo Přidat profil publikování.
V dialogovém okně Publikovat vyberte Importovat profil pro cíl a vyberte Další.
Na kartě Importovat profil vyberte soubor nastavení publikování, který jste uložili dříve ve složce FunctionEGDWDumper, a pak vyberte Dokončit.
Jakmile Visual Studio nakonfiguruje profil, vyberte Publikovat. Potvrďte, že publikování proběhlo úspěšně.
Ve webovém prohlížeči, který má otevřenou stránku Funkce Azure, vyberte v prostředním podokně funkce Functions . Ověřte, že se v seznamu zobrazuje funkce EventGridTriggerMigrateData . Pokud ho nevidíte, zkuste publikovat ze sady Visual Studio znovu a pak aktualizujte stránku na portálu.
Po publikování funkce můžete začít událost odebírat.
Přihlásíte se k odběru události
Na nové kartě nebo novém okně webového prohlížeče se přihlaste k webu Azure Portal.
Na webu Azure Portal vyberte v nabídce vlevo skupiny prostředků.
Vyfiltrujte seznam skupin prostředků zadáním názvu skupiny prostředků do vyhledávacího pole.
V seznamu vyberte skupinu prostředků.
V seznamu prostředků vyberte obor názvů služby Event Hubs.
Na stránce služby Event Hubs Namespace vyberte Události v nabídce vlevo a pak na panelu nástrojů vyberte + Odběr událostí.
Na stránce Vytvořit odběr události postupujte takto:
Zadejte název odběru události.
Zadejte název systémového tématu. Systémové téma obsahuje koncový bod pro odesílatele k odesílání událostí. Další informace naleznete v tématu Systémová témata
Jako typ koncového bodu vyberte funkci Azure Functions.
V části Koncový bod vyberte odkaz.
Na stránce Vybrat funkci Azure postupujte podle těchto kroků, pokud nejsou vyplněné automaticky.
- Vyberte předplatné Azure, které má funkci Azure.
- Vyberte skupinu prostředků pro funkci.
- Vyberte aplikaci funkcí.
- Vyberte slot nasazení.
- Vyberte funkci EventGridTriggerMigrateData.
Na stránce Vybrat funkci Azure vyberte Potvrdit výběr.
Pak zpátky na stránce Vytvořit odběr události vyberte Vytvořit.
Ověřte, že je vytvořené odběry událostí. Přepněte na kartu Odběry událostí na stránce Události pro obor názvů Event Hubs.
Spuštění aplikace, která generuje data
Dokončili jste nastavení centra událostí, vyhraďte fond SQL (dříve SQL Data Warehouse), aplikaci funkcí Azure a odběr událostí. Před spuštěním aplikace, která generuje data z centra událostí, je potřeba nakonfigurovat několik hodnot.
Na webu Azure Portal přejděte ke své skupině prostředků, jak jste to udělali dříve.
Vyberte obor názvů služby Event Hubs.
Na stránce služby Event Hubs Namespace vyberte v nabídce vlevo zásady sdíleného přístupu.
V seznamu zásad vyberte RootManageSharedAccessKey .
Vyberte tlačítko kopírovat vedle textového pole Připojovací řetězec primárního klíče .
Vraťte se k řešení sady Visual Studio.
Klikněte pravým tlačítkem myši na projekt WindTurbineDataGenerator a vyberte Nastavit jako spouštěný projekt.
V projektu WindTurbineDataGenerator otevřete program.cs.
Nahraďte
<EVENT HUBS NAMESPACE CONNECTION STRING>
připojovací řetězec, které jste zkopírovali z portálu.Pokud jste pro jiné centrum událostí použili jiný název než
hubdatamigration
, nahraďte<EVENT HUB NAME>
názvem centra událostí.private const string EventHubConnectionString = "Endpoint=sb://demomigrationnamespace.servicebus.windows.net/..."; private const string EventHubName = "hubdatamigration";
Sestavte řešení. Spusťte aplikaci WindTurbineGenerator.exe.
Po několika minutách na druhé kartě prohlížeče, kde máte otevřené okno dotazu, zadejte dotaz na tabulku v datovém skladu pro migrovaná data.
select * from [dbo].[Fact_WindTurbineMetrics]
Důležité
K ověřování v oboru názvů služby Azure Event Hubs používáme připojovací řetězec, aby byl kurz jednoduchý. V produkčních prostředích doporučujeme používat ověřování Microsoft Entra ID. Při použití aplikace můžete pro aplikaci povolit spravovanou identitu a přiřadit jí odpovídající roli (vlastník služby Azure Event Hubs, odesílatel dat služby Azure Event Hubs nebo příjemce dat služby Azure Event Hubs) v oboru názvů event hubs. Další informace naleznete v tématu Autorizace přístupu ke službě Event Hubs pomocí Microsoft Entra ID.
Monitorování řešení
Tato část vám pomůže s monitorováním nebo řešením potíží s řešením.
Zobrazení zachycených dat v účtu úložiště
Přejděte do skupiny prostředků a vyberte účet úložiště, který se používá k zachytávání dat událostí.
Na stránce Účet úložiště vyberte v nabídce vlevo prohlížeč úložiště.
Rozbalte kontejnery objektů blob a vyberte windturbinecapture.
V pravém podokně otevřete složku se stejným názvem jako obor názvů služby Event Hubs.
Otevřete složku s názvem stejné jako vaše centrum událostí (hubdatamigration).
Procházení složek a zobrazení souborů AVRO Tady je příklad:
Ověřte, že trigger Event Gridu vyvolal funkci.
Přejděte do skupiny prostředků a vyberte aplikaci funkcí.
V prostředním podokně vyberte kartu Funkce .
Ze seznamu vyberte funkci EventGridTriggerMigrateData.
Na stránce Funkce vyberte v nabídce vlevo možnost Sledovat.
Výběrem možnosti Konfigurovat nakonfigurujte Application Insights tak, aby zaznamenával protokoly vyvolání.
Vytvořte nový prostředek Application Insights nebo použijte existující prostředek.
Přejděte zpět na stránku Monitorování funkce.
Ověřte, že klientská aplikace (WindTurbineDataGenerator), která odesílá události, stále běží. Pokud ne, spusťte aplikaci.
Počkejte několik minut (5 minut nebo více) a výběrem tlačítka Aktualizovat zobrazíte vyvolání funkce.
Výběrem vyvolání zobrazíte podrobnosti.
Event Grid distribuuje data události mezi odběratele. Následující příklad ukazuje data událostí vygenerovaná při streamování dat přes centrum událostí zachycená v objektu blob. Všimněte si
fileUrl
zejména vlastnosti v objektudata
, který odkazuje na objekt blob v úložišti. Aplikace funkcí používá tuto adresu URL k načtení souboru objektu blob s zachycenými daty.{ "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" }
Ověřte, že jsou data uložená ve vyhrazeném fondu SQL.
Na kartě prohlížeče, kde máte otevřené okno dotazu, zadejte dotaz na tabulku ve vyhrazeném fondu SQL pro migrovaná data.
Další kroky
- Další informace o nastavení a spuštění ukázky najdete v článku s ukázkou služeb Event Hubs Capture a Event Grid.
- V tomto kurzu jste pro událost vytvořili odběr
CaptureFileCreated
událostí. Další informace o této události a všech událostech podporovaných službou Azure Blob Storage najdete v tématu Azure Event Hubs jako zdroj služby Event Grid. - Další informace o funkci Event Hubs Capture najdete v tématu Zachycení událostí prostřednictvím služby Azure Event Hubs ve službě Azure Blob Storage nebo Azure Data Lake Storage.