Sdílet prostřednictvím


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.

Přehled aplikace

Tento diagram znázorňuje pracovní postup řešení, které vytvoříte v tomto kurzu:

  1. Data odesílaná do centra událostí Azure se zaznamenávají v úložišti objektů blob v Azure.
  2. Po dokončení zachytávání dat se vygeneruje a odešle událost do služby Azure Event Grid.
  3. Azure Event Grid předává tato data událostí do aplikace funkcí Azure.
  4. Aplikace funkcí používá adresu URL objektu blob v datech události k načtení objektu blob z úložiště.
  5. 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, vývoj 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

  1. Přihlaste se k portálu Azure.

  2. Nahoře vyberte tlačítko Cloud Shellu .

    Snímek obrazovky webu Azure Portal s výběrem tlačítka Cloud Shell

  3. V dolní části prohlížeče se otevře Cloud Shell.

    1. Pokud používáte Cloud Shell poprvé:
      1. Pokud se zobrazí možnost výběru mezi prostředím Bash a PowerShellem, vyberte Bash.

      2. Účet úložiště vytvoříte výběrem možnosti Vytvořit úložiště. Azure Cloud Shell k ukládání některých souborů vyžaduje účet úložiště Azure.

        Snímek obrazovky znázorňující vytvoření úložiště pro Cloud Shell

      3. Počkejte, až se Cloud Shell inicializuje.

        Snímek obrazovky s inicializovaným Cloud Shellem

  4. V Cloud Shellu vyberte Bash , jak je znázorněno na obrázku výše, pokud ještě není vybraný.

  5. Vytvořte skupinu prostředků Azure spuštěním následujícího příkazu rozhraní příkazového řádku:

    1. 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
      
    2. 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
      }
      
  6. 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:

    1. 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>
      
    2. 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.

  7. 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.

  1. Na webu Azure Portal vyberte v nabídce vlevo skupiny prostředků.

  2. Vyfiltrujte seznam skupin prostředků zadáním názvu skupiny prostředků do vyhledávacího pole.

  3. V seznamu vyberte skupinu prostředků.

    Snímek obrazovky znázorňující výběr vaší skupiny prostředků

  4. Ověřte, že ve skupině prostředků vidíte následující prostředky:

    Snímek obrazovky znázorňující prostředky ve skupině prostředků

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.

  1. V seznamu prostředků ve skupině prostředků vyberte vyhrazený fond SQL.

  2. Na stránce Vyhrazený fond SQL v části Běžné úlohy v nabídce vlevo vyberte Editor dotazů (Preview).

    Snímek obrazovky znázorňující výběr Editor Power Query na stránce vyhrazeného fondu SQL na webu Azure Portal

  3. 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.

  4. 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);
    

    Snímek obrazovky s editorem dotazů

  5. 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í

  1. Na stránce Skupina prostředků vyberte v seznamu prostředků aplikaci Azure Functions.

    Snímek obrazovky znázorňující výběr aplikace funkcí v seznamu prostředků pro skupinu prostředků

  2. Na stránce Aplikace funkcí pro vaši aplikaci vyberte Na panelu příkazů možnost Získat profil publikování.

    Snímek obrazovky znázorňující výběr tlačítka **Získat profil publikování** na panelu příkazů na stránce aplikace funkcí

  3. Stáhněte a uložte soubor do podsložky FunctionEGDDumper složky EventHubsCaptureEventGridDemo.

Použití profilu publikování k publikování aplikace Functions

  1. Spusťte Visual Studio.

  2. 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.

  3. V Průzkumník řešení klepněte pravým tlačítkem na functionEGDWDumper projekt a vyberte Publikovat.

  4. Na následující obrazovce vyberte Start nebo Přidat profil publikování.

  5. V dialogovém okně Publikovat vyberte Importovat profil pro cíl a vyberte Další.

    Snímek obrazovky znázorňující výběr **Importovat profil** v dialogovém okně **Publikovat**.

  6. Na kartě Importovat profil vyberte soubor nastavení publikování, který jste uložili dříve ve složce FunctionEGDWDumper, a pak vyberte Dokončit.

  7. Jakmile Visual Studio nakonfiguruje profil, vyberte Publikovat. Potvrďte, že publikování proběhlo úspěšně.

  8. 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.

    Snímek obrazovky s potvrzením vytvoření funkce

Po publikování funkce můžete začít událost odebírat.

Přihlásíte se k odběru události

  1. Na nové kartě nebo novém okně webového prohlížeče se přihlaste k webu Azure Portal.

  2. Na webu Azure Portal vyberte v nabídce vlevo skupiny prostředků.

  3. Vyfiltrujte seznam skupin prostředků zadáním názvu skupiny prostředků do vyhledávacího pole.

  4. V seznamu vyberte skupinu prostředků.

  5. V seznamu prostředků vyberte obor názvů služby Event Hubs.

  6. Na stránce Obor názvů služby Event Hubs vyberte Události v nabídce vlevo a pak na panelu nástrojů vyberte + Odběr událostí.

    Snímek obrazovky se stránkou Události pro obor názvů služby Event Hubs s vybraným odkazem Přidat odběr událostí

  7. Na stránce Vytvořit odběr události postupujte takto:

    1. Zadejte název odběru události.

    2. 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

    3. Jako typ koncového bodu vyberte funkci Azure Functions.

    4. V části Koncový bod vyberte odkaz.

    5. Na stránce Vybrat funkci Azure postupujte podle těchto kroků, pokud nejsou vyplněné automaticky.

      1. Vyberte předplatné Azure, které má funkci Azure.
      2. Vyberte skupinu prostředků pro funkci.
      3. Vyberte aplikaci funkcí.
      4. Vyberte slot nasazení.
      5. Vyberte funkci EventGridTriggerMigrateData.
    6. Na stránce Vybrat funkci Azure vyberte Potvrdit výběr.

    7. Pak zpátky na stránce Vytvořit odběr události vyberte Vytvořit.

      Snímek obrazovky se stránkou Vytvořit odběr události

  8. 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.

    Snímek obrazovky s kartou Odběry událostí na stránce Události

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.

  1. Na webu Azure Portal přejděte ke své skupině prostředků, jak jste to udělali dříve.

  2. Vyberte obor názvů služby Event Hubs.

  3. Na stránce Obor názvů služby Event Hubs vyberte v nabídce vlevo zásady sdíleného přístupu.

  4. V seznamu zásad vyberte RootManageSharedAccessKey .

    Snímek obrazovky se stránkou Zásady sdíleného přístupu pro obor názvů služby Event Hubs

  5. Vyberte tlačítko kopírovat vedle textového pole Připojovací řetězec primárního klíče .

  6. Vraťte se k řešení sady Visual Studio.

  7. Klikněte pravým tlačítkem myši na projekt WindTurbineDataGenerator a vyberte Nastavit jako spouštěný projekt.

  8. V projektu WindTurbineDataGenerator otevřete program.cs.

  9. Nahraďte <EVENT HUBS NAMESPACE CONNECTION STRING> připojovací řetězec, které jste zkopírovali z portálu.

  10. 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";
    
  11. Sestavte řešení. Spusťte aplikaci WindTurbineGenerator.exe.

  12. 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]
    

    Snímek obrazovky zobrazující výsledky dotazu

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ě

  1. Přejděte do skupiny prostředků a vyberte účet úložiště, který se používá k zachytávání dat událostí.

  2. Na stránce Účet úložiště vyberte v nabídce vlevo prohlížeč úložiště.

  3. Rozbalte kontejnery objektů blob a vyberte windturbinecapture.

  4. V pravém podokně otevřete složku se stejným názvem jako obor názvů služby Event Hubs.

  5. Otevřete složku s názvem stejné jako vaše centrum událostí (hubdatamigration).

  6. Procházení složek a zobrazení souborů AVRO Tady je příklad:

    Snímek obrazovky znázorňující zachycený soubor v úložišti

Ověřte, že trigger Event Gridu vyvolal funkci.

  1. Přejděte do skupiny prostředků a vyberte aplikaci funkcí.

  2. V prostředním podokně vyberte kartu Funkce .

  3. Ze seznamu vyberte funkci EventGridTriggerMigrateData.

  4. Na stránce Funkce vyberte v nabídce vlevo možnost Sledovat.

  5. Výběrem možnosti Konfigurovat nakonfigurujte Application Insights tak, aby zaznamenával protokoly vyvolání.

  6. Vytvořte nový prostředek Application Insights nebo použijte existující prostředek.

  7. Přejděte zpět na stránku Monitorování funkce.

  8. Ověřte, že klientská aplikace (WindTurbineDataGenerator), která odesílá události, stále běží. Pokud ne, spusťte aplikaci.

  9. Počkejte několik minut (5 minut nebo více) a výběrem tlačítka Aktualizovat zobrazíte vyvolání funkce.

    Snímek obrazovky znázorňující vyvolání funkce

  10. 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 objektu data , 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.

Snímek obrazovky zobrazující výsledky konečného dotazu

Další kroky