Kurz: Streamování velkých dat do datového skladu
Azure Event Grid je inteligentní služba směrování událostí, která umožňuje reagovat na oznámení nebo události z aplikací a služeb. Může například aktivovat funkci Azure, která zpracuje Event Hubs dat zachycených do úložiště objektů blob nebo Data Lake Storage. Tato ukázka ukazuje, jak pomocí Event Grid a Azure Functions migrovat zachycená data Event Hubs z úložiště objektů blob do Azure Synapse Analytics, konkrétně vyhrazeného fondu SQL.
Tento diagram znázorňuje pracovní postup řešení, které sestavíte v tomto kurzu:
- Data odesílaná do centra událostí Azure se zachytá v úložišti objektů blob v Azure.
- Po dokončení zachytávání dat se vygeneruje událost a odesílá se do služby Azure Event Grid.
- Event Grid předává tato data události do aplikace funkcí Azure.
- Aplikace funkcí používá adresu URL objektu blob v datech událostí k načtení objektu blob z úložiště.
- Aplikace funkcí migruje data objektů blob do Azure Synapse Analytics.
V tomto článku podnikáte následující kroky:
- Nasazení požadované infrastruktury pro tento kurz
- Publikování kódu do aplikace Functions
- Vytvoření odběru Event Gridu
- Streamování ukázkových dat do Event Hubs
- Ověření zachycených dat v Azure Synapse Analytics
Požadavky
K dokončení tohoto kurzu potřebujete:
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
- Visual Studio 2019 se sadami úloh pro: vývoj desktopových aplikací pro .NET, vývoj pro Azure, vývoj pro ASP.NET a web, Node.js vývoj aplikací a vývoj v Pythonu.
- Stáhněte si do počítače ukázkový projekt EventHubsCaptureEventGridDemo.
- WindTurbineDataGenerator – jednoduchý vydavatel, který odesílá ukázková data větrné turbíny do centra událostí s podporou zachytávání.
- FunctionDWDumper – Funkce Azure, která přijímá oznámení Event Gridu při zachycení souboru Avro do objektu blob služby Azure Storage. Přijme cestu URI objektu blob, přečte jeho obsah a nasoudí tato data do Azure Synapse Analytics (vyhrazený fond SQL).
Nasazení infrastruktury
V tomto kroku nasadíte požadovanou infrastrukturu pomocí Resource Manager šablony. Při nasazování šablony se vytvoří následující prostředky:
- Centrum událostí s povolenou funkcí Zachytávání
- Úč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 webu Azure Portal.
V Cloud Shell vyberte tlačítko pro výběr.
V dolní Cloud Shell se otevře okno prohlížeče.
Pokud se Cloud Shell mezi Bashem a PowerShellem, v okně vyberte Bash.
Pokud používáte účet Cloud Shell, vytvořte účet úložiště výběrem možnosti Vytvořit úložiště. Azure Cloud Shell k uložení některých souborů vyžaduje účet úložiště Azure.
Počkejte, až Cloud Shell inicializuje.
Spuštěním následujícího příkazu rozhraní příkazového řádku vytvořte skupinu prostředků Azure:
Zkopírujte následující příkaz a vložte ho do Cloud Shell okna. Pokud chcete, změňte název a umístění skupiny prostředků.
az group create -l eastus -n rgDataMigrationStiskně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 příkaz a vložte ho do Cloud Shell okna. Případně můžete chtít zkopírovat nebo vložit do editoru podle vašeho výběru, nastavit hodnoty a pak zkopírovat příkaz do Cloud Shell.
Důležité
Před spuštěním příkazu zadejte hodnoty pro následující entity:
- 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.
- Jméno uživatele SQL a heslo.
- 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>V okně Cloud Shell enter spusťte příkaz . Vzhledem k tomu, že vytváříte spoustu prostředků, může tento proces chvíli trvat. Ve výsledku příkazu se ujistěte, že ne došlo k žádným selháním.
Zavřete Cloud Shell výběrem tlačítka Cloud Shell na portálu (nebo) X v pravém horním rohu okna Cloud Shell obrazovky.
Ověření, že se prostředky vytvořily
V Azure Portal nabídce vyberte Skupiny prostředků.
Seznam skupin prostředků vyfiltrujte tak, že do vyhledávacího pole zadáte název vaší skupiny prostředků.
V seznamu vyberte vaši skupinu prostředků.
Ověřte, že se ve skupině prostředků zobrazí následující prostředky:
Vytvoření tabulky v Azure Synapse Analytics
Spuštěním skriptu CreateDataWarehouseTable.sql vytvořte tabulku v datovém skladu. Ke spuštění skriptu můžete použít Visual Studio editoru dotazů na portálu. Následující kroky ukazují, jak používat Editor dotazů:
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 jméno uživatele a heslo pro sql server a vyberte OK. Pokud se zobrazí zpráva o povolení přístupu klienta k SERVERU SQL, postupujte následovně:
- Vyberte odkaz: Nastavení brány firewall serveru.
- Na stránce Nastavení brány firewall vyberte na panelu nástrojů Přidat IP adresu klienta a pak na panelu nástrojů vyberte Uložit.
- U zprávy o úspěchu vyberte OK.
- Vraťte se na stránku Vyhrazený fond SQL a v nabídce vlevo vyberte Editor dotazů (Preview).
- Zadejte uživatele a heslo 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 se data vytvořila na konci kurzu.
Aktualizace verze modulu runtime funkce
Ve webovém prohlížeči otevřete další kartu a přejděte na Azure Portal.
V Azure Portal nabídce vyberte Skupiny prostředků.
Vyberte skupinu prostředků, ve které aplikace funkcí existuje.
V seznamu prostředků ve skupině prostředků vyberte aplikaci funkcí.
V nabídce vlevo v části Nastavení vyberte Konfigurace.
V pravém podokně přepněte na kartu Nastavení modulu runtime funkce.
Aktualizujte verzi modulu runtime na ~3.
Na panelu nástrojů vyberte Uložit.
V místní nabídce pro potvrzení uložení změn vyberte Pokračovat.
Publikování aplikace Azure Functions
Spusťte Visual Studio.
Otevřete řešení EventHubsCaptureEventGridDemo.sln, které jste si stáhli z GitHubu v rámci požadavků. Najdete ho ve
/samples/e2e/EventHubsCaptureEventGridDemosložce .V Průzkumník řešení klikněte pravým tlačítkem na projekt FunctionEGDWDumper a vyberte Publikovat.
Pokud se zobrazí následující obrazovka, vyberte Spustit.
V dialogovém okně Publikovat jako Cíl vyberte Azure a pak vyberte Další.
Vyberte Azure Function App (Windows) a pak vyberte Další.
Na kartě Instance služby Functions vyberte své předplatné Azure, rozbalte skupinu prostředků, vyberte aplikaci funkcí a pak vyberte Dokončit. Pokud jste to ještě neudělali, musíte se přihlásit ke svému účtu Azure.
Na stránce Publish (Publikovat) v části Service Dependencies (Závislosti služeb) vyberte Configure for Storage (Konfigurovat pro úložiště).
Na stránce Konfigurace závislosti postupujte takto:
Vyberte účet úložiště, který jste vytvořili dříve, a pak vyberte Další.
Zadejte název připojovacího řetězce a u možnosti Uložit připojovací řetězec vyberte Žádné a pak vyberte Další.
Vymažte soubor kódu C# a možnost Secrets store (Úložiště tajných kódů) a pak vyberte Finish (Dokončit).
Jakmile Visual Studio nakonfiguruje profil, vyberte Publikovat.
Na kartě, která má otevřenou stránku Funkce Azure, vyberte v nabídce vlevo Funkce. Ověřte, že se v seznamu zobrazuje funkce EventGridTriggerMigrateData. Pokud ji nevidíte, zkuste ji znovu publikovat z Visual Studio 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 v novém okně webového prohlížeče přejděte na Azure Portal.
V Azure Portal nabídce vyberte Skupiny prostředků.
Seznam skupin prostředků vyfiltrujte tak, že do vyhledávacího pole zadáte název vaší skupiny prostředků.
V seznamu vyberte vaši skupinu prostředků.
V Event Hubs prostředků vyberte obor názvů .
Na stránce Event Hubs obor názvů vyberte v nabídce vlevo Události 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 poskytuje koncový bod pro odesílání událostí odesílatelem. Další informace najdete v tématu Systémová témata.
Jako Typ koncového bodu vyberte Funkce Azure.
Jako 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 Select Azure Function (Vybrat funkci Azure) vyberte Confirm Selection (Potvrdit výběr).
Pak zpátky na stránce Vytvořit odběr události vyberte Vytvořit.
Ověřte, že je odběr událostí vytvořený. Přepněte na kartu Odběry událostí na stránce Události pro Event Hubs názvů.
V seznamu App Service ve skupině prostředků vyberte plán App Service (ne plán).
Spuštění aplikace, která generuje data
Dokončili jste nastavení centra událostí, vymezte 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.
V Azure Portal přejděte ke své skupině prostředků, jak jste to udělali dříve.
Vyberte obor Event Hubs názvů.
Na stránce Event Hubs oboru názvů v levé nabídce vyberte Zásady sdíleného přístupu.
V seznamu zásad vyberte RootManageSharedAccessKey.
Vyberte tlačítko pro kopírování vedle textového pole Připojovací řetězec – primární klíč.
Zpět ke svému Visual Studio řešení.
Klikněte pravým tlačítkem na projekt WindTurbineDataGenerator a vyberte Nastavit jako spouštěný projekt.
V projektu WindTurbineDataGenerator otevřete soubor program.cs.
Nahraďte
<EVENT HUBS NAMESPACE CONNECTION STRING>připojovacím řetězcem, který jste zkopíroval z portálu.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 WindTurbineGenerator.exe aplikaci.
Po několika minutách na druhé kartě prohlížeče, kde máte otevřené okno dotazu, zadejte dotaz na migrovaná data do tabulky v datovém skladu.
select * from [dbo].[Fact_WindTurbineMetrics]
Monitorování řešení
Tato část vám pomůže s monitorováním řešení nebo řešením potíží.
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 Průzkumník služby Storage (Preview) v levé nabídce.
Rozbalte kontejnery objektů blob a vyberte windturbinecapture.
V pravém podokně otevřete složku s Event Hubs názvem vašeho oboru názvů.
Otevřete složku s názvem , která je stejná jako vaše centrum událostí (hubdatamigration).
Prohlédněte si složky a uvidíte soubory AVRO. Tady je příklad:
Ověřte, že Event Grid funkce vyvolala aktivační událost.
Přejděte do skupiny prostředků a vyberte aplikaci funkcí.
V nabídce vlevo vyberte Funkce.
Ze seznamu vyberte funkci EventGridTriggerMigrateData.
Na stránce Funkce v nabídce vlevo vyberte Monitorovat.
Vyberte Konfigurovat a nakonfigurujte Application Insights tak, aby zachytávání protokolů volání.
Vytvořte nový prostředek Application Insights nebo použijte existující prostředek.
Vraťte se na stránku Monitorování funkce.
Ověřte, že klientská aplikace (WindTurbineDataGenerator), která odesílá události, je stále spuštěná. Pokud ne, spusťte aplikaci.
Počkejte několik minut (5 minut nebo déle) a výběrem tlačítka Aktualizovat zobrazte volá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 zachytání dat streamovaných prostřednictvím centra událostí v objektu blob. Konkrétně si všimněte,
fileUrlže vlastnost v objektu odkazuje na objekt blob vdataúložišti. Aplikace funkcí používá tuto adresu URL k načtení souboru objektů blob se zachycených 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ěření, ž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 migrovaná data do tabulky ve vyhrazeném fondu SQL.

Další kroky
- Pokud chcete poznat rozdíly ve službách Azure pro zasílání zpráv, přečtěte si článek Výběr mezi službami Azure, které doručují zprávy.
- Úvod do Event Gridu najdete v článku Informace o službě Event Grid.
- Úvod do služby Event Hubs Capture najdete v článku o povolení služby Event Hubs Capture na webu Azure Portal.
- 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.