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.

Application overview

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

    Screenshot of Azure portal showing the selection of Cloud Shell button.

  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.

        Screenshot showing the creation of storage for Cloud Shell.

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

        Screenshot showing the Cloud Shell initialized.

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

    Screenshot showing the selection of your resource group.

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

    Screenshot showing resources in the resource group.

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

    Screenshot showing the selection of Query Editor on a Dedicated SQL pool page in the 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);
    

    Screenshot showing the query editor.

  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.

    Screenshot showing the selection of the function app in the list of resources for a resource group.

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

    Screenshot showing the selection of the **Get Publish Profile** button on the command bar of the function app page.

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

    Screenshot showing the selection **Import Profile** on the **Publish** dialog box.

  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.

    Screenshot showing the confirmation of function creation.

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

    Screenshot of the Events page for an Event Hubs namespace with Add event subscription link selected.

  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.

      Screenshot of the Create an event subscription page.

  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.

    Screenshot showing the Event Subscriptions tab on the Events page.

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 .

    Screenshot showing the Shared access policies page for an Event Hubs namespace.

  5. Vyberte tlačítko kopírování vedle textového pole Připojení ionový klíč 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]
    

    Screenshot showing the query results.

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:

    Screenshot showing the captured file in the storage.

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 Přehledy aplikace 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.

    Screenshot showing the Function invocations.

  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.

Screenshot showing the final query results.

Další kroky