Oktatóanyag: Az Event Hubs által rögzített adatok migrálása az Azure Storage-ból az Azure Synapse Analyticsbe az Azure Event Grid és az Azure Functions használatával

Ebben az oktatóanyagban az Event Hubs által rögzített adatokat migrálja az Azure Blob Storage-ból az Azure Synapse Analyticsbe, pontosabban egy dedikált SQL-készletbe az Azure Event Grid és az Azure Functions használatával.

Application overview

Ez az ábra a jelen oktatóanyagban buildelt megoldás munkafolyamatát mutatja be:

  1. Az Azure-eseményközpontba küldött adatok egy Azure-blobtárolóban lesznek rögzítve.
  2. Amikor az adatrögzítés befejeződött, a rendszer létrehoz egy eseményt, és elküldi az Azure Event Gridnek.
  3. Az Azure Event Grid továbbítja ezeket az eseményadatokat egy Azure-függvényalkalmazásnak.
  4. A függvényalkalmazás az eseményadatok blob URL-címét használja a blob storage-ból való lekéréséhez.
  5. A függvényalkalmazás migrálja a blobadatokat egy Azure Synapse Analyticsbe.

Ebben a cikkben a következő lépéseket kell elvégeznie:

  • Az oktatóanyaghoz szükséges infrastruktúra üzembe helyezése
  • Kód közzététele egy Functions-alkalmazásra
  • Event Grid-előfizetés létrehozása
  • Mintaadatok streamelése az Event Hubsba
  • Rögzített adatok ellenőrzése az Azure Synapse Analyticsben

Előfeltételek

Az oktatóanyag teljesítéséhez a következőkre lesz szüksége:

  • Ez a cikk feltételezi, hogy ismeri az Event Gridet és az Event Hubsot (különösen a Rögzítés funkciót). Ha nem ismeri az Azure Event Gridet, olvassa el az Azure Event Grid bemutatása című témakört. Az Azure Event Hubs Capture funkciójának megismeréséhez tekintse meg az Események rögzítése az Azure Event Hubson keresztül az Azure Blob Storage-ban vagy az Azure Data Lake Storage-ban című témakört.
  • Azure-előfizetés. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
  • Visual Studio számítási feladatokkal: .NET asztali fejlesztés, Azure-fejlesztés, ASP.NET és webfejlesztés, Node.js fejlesztés és Python-fejlesztés.
  • Töltse le az EventHubsCaptureEventGridDemo mintaprojektet a számítógépre.
    • WindTurbineDataGenerator – Egy egyszerű közzétevő, amely minta szélturbinaadatokat küld egy eseményközpontba, amelyen engedélyezve van a Rögzítés funkció.
    • FunctionDWDumper – Egy Azure-függvény, amely értesítést kap az Azure Event Gridtől, amikor egy Avro-fájlt rögzít az Azure Storage-blob. Megkapja a blob URI-elérési útját, beolvassa annak tartalmát, és leküldi ezeket az adatokat az Azure Synapse Analyticsbe (dedikált SQL-készlet).

Az infrastruktúra üzembe helyezése

Ebben a lépésben a szükséges infrastruktúrát egy Resource Manager-sablonnal helyezi üzembe. A sablon üzembe helyezésekor a következő erőforrások jönnek létre:

  • Eseményközpont, amelyen engedélyezve van a Rögzítés funkció.
  • A rögzített fájlok tárfiókja.
  • App service-csomag a függvényalkalmazás üzemeltetéséhez
  • Függvényalkalmazás az esemény feldolgozásához
  • SQL Server az adattárház üzemeltetéséhez
  • Azure Synapse Analytics (dedikált SQL-készlet) a migrált adatok tárolásához

Az infrastruktúra üzembe helyezése az Azure CLI használatával

  1. Jelentkezzen be az Azure Portalra.

  2. Válassza a Cloud Shell gombot a tetején.

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

  3. A Cloud Shell a böngésző alján nyílik meg.

    1. Ha először használja a Cloud Shellt:
      1. Ha megjelenik egy lehetőség a Bash és a PowerShell közötti választásra, válassza a Bash lehetőséget.

      2. Tárfiók létrehozása a Tár létrehozása lehetőséget választva. Az Azure Cloud Shellnek szüksége van egy Azure Storage-fiókra bizonyos fájlok tárolásához.

        Screenshot showing the creation of storage for Cloud Shell.

      3. Várjon, amíg a Cloud Shell inicializálódik.

        Screenshot showing the Cloud Shell initialized.

  4. A Cloud Shellben válassza a Basht a fenti képen látható módon, ha még nincs kijelölve.

  5. Hozzon létre egy Azure-erőforráscsoportot a következő CLI-parancs futtatásával:

    1. Másolja és illessze be a következő parancsot a Cloud Shell ablakába. Szükség esetén módosítsa az erőforráscsoport nevét és helyét.

      az group create -l eastus -n rgDataMigration
      
    2. Nyomja le az ENTER billentyűt.

      Példa:

      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. Telepítse az előző szakaszban említett összes erőforrást (eseményközpont, tárfiók, függvényalkalmazás, Azure Synapse Analytics) az alábbi CLI-parancs futtatásával:

    1. Másolja és illessze be a parancsot a Cloud Shell ablakába. Másik lehetőségként másolhatja/beillesztheti a kívánt szerkesztőbe, beállíthatja az értékeket, majd átmásolhatja a parancsot a Cloud Shellbe. Ha hiba jelenik meg egy Azure-erőforrásnév miatt, törölje az erőforráscsoportot, javítsa ki a nevet, és próbálkozzon újra a paranccsal.

      Fontos

      A parancs futtatása előtt adja meg az alábbi entitások értékeit:

      • A korábban létrehozott erőforráscsoport neve.
      • Az eseményközpont névterének neve.
      • Az eseményközpont neve. Az értéket a következőképpen hagyhatja el (hubdatamigration).
      • Az SQL Server neve.
      • Az SQL-felhasználó neve és jelszava.
      • Az adatbázis neve.
      • A tárfiók neve.
      • A függvényalkalmazás neve.
      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. A parancs futtatásához nyomja le az ENTER billentyűt a Cloud Shell ablakában. Ez a folyamat eltarthat egy ideig, mivel egy csomó erőforrást hoz létre. A parancs eredményeként győződjön meg arról, hogy nem történt hiba.

  7. Zárja be a Cloud Shellt a Cloud Shell ablakának jobb felső sarkában található Portál (vagy) X gombra kattintva.

Az erőforrások létrehozásának ellenőrzése

  1. Az Azure Portalon válassza az Erőforráscsoportok lehetőséget a bal oldali menüben.

  2. Az erőforráscsoportok listájának szűréséhez írja be az erőforráscsoport nevét a keresőmezőbe.

  3. Válassza ki az erőforráscsoportot a listában.

    Screenshot showing the selection of your resource group.

  4. Győződjön meg arról, hogy a következő erőforrásokat látja az erőforráscsoportban:

    Screenshot showing resources in the resource group.

Tábla létrehozása az Azure Synapse Analyticsben

Ebben a szakaszban egy táblát hoz létre a korábban létrehozott dedikált SQL-készletben.

  1. Az erőforráscsoport erőforrásainak listájában válassza ki a dedikált SQL-készletet.

  2. A Dedikált SQL-készlet lapján, a bal oldali menü Common Tasks szakaszában válassza a Lekérdezésszerkesztő (előzetes verzió) lehetőséget.

    Screenshot showing the selection of Query Editor on a Dedicated SQL pool page in the Azure portal.

  3. Adja meg az SQL Server felhasználónevét és jelszavát, majd kattintson az OK gombra. Ha megjelenik egy üzenet, amely arról szól, hogy engedélyezi az ügyfélnek az SQL Server elérését, válassza az IP-cím <> engedélyezése az SQL-kiszolgálón<>, majd válassza az OK gombot.

  4. A lekérdezési ablakban másolja és futtassa a következő SQL-szkriptet:

    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. Tartsa nyitva ezt a lapot vagy ablakot, hogy ellenőrizze, hogy az adatok létrejönnek-e az oktatóanyag végén.

Az Azure Functions-alkalmazás közzététele

Először szerezze be a Functions-alkalmazás közzétételi profilját az Azure Portalról. Ezután a közzétételi profillal tegye közzé az Azure Functions-projektet vagy -alkalmazást a Visual Studióban.

A közzétételi profil lekérése

  1. Az Erőforráscsoport lapon válassza ki az Azure Functions alkalmazást az erőforrások listájában.

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

  2. Az alkalmazás Függvényalkalmazás lapján válassza a Közzétételi profil lekérése lehetőséget a parancssávon.

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

  3. Töltse le és mentse a fájlt az EventHubsCaptureEventGridDemo mappa FunctionEGDumper almappájába.

A Functions-alkalmazás közzététele a közzétételi profillal

  1. Indítsa el a Visual Studiót.

  2. Nyissa meg a GitHubról letöltött EventHubsCaptureEventGridDemo.sln megoldást az előfeltételek részeként. A mappában /samples/e2e/EventHubsCaptureEventGridDemo található.

  3. A Megoldáskezelő kattintson a jobb gombbal a FunctionEGDWDumper projektre, és válassza a Közzététel lehetőséget.

  4. A következő képernyőn válassza a Közzétételi profil indítása vagy hozzáadása lehetőséget.

  5. A Közzététel párbeszédpanelen válassza a Profil importálása célhoz lehetőséget, majd válassza a Tovább gombot.

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

  6. A Profil importálása lapon válassza ki a FunctionEGDWDumper mappában korábban mentett közzétételi beállításokat tartalmazó fájlt, majd válassza a Befejezés lehetőséget.

  7. Miután a Visual Studio konfigurálta a profilt, kattintson a Közzététel elemre. Győződjön meg arról, hogy a közzététel sikeres volt.

  8. A megnyitott Azure-függvényoldalt tartalmazó webböngészőben válassza a Középső panelEn található Függvények lehetőséget. Győződjön meg arról, hogy az EventGridTriggerMigrateData függvény megjelenik a listában. Ha nem látja, próbálkozzon újra a Visual Studióból való közzétételt, majd frissítse a lapot a portálon.

    Screenshot showing the confirmation of function creation.

A függvény közzététele után feliratkozhat az eseményre.

Feliratkozás az eseményre

  1. Egy webböngésző új lapján vagy új ablakában jelentkezzen be az Azure Portalra.

  2. Az Azure Portalon válassza az Erőforráscsoportok lehetőséget a bal oldali menüben.

  3. Az erőforráscsoportok listájának szűréséhez írja be az erőforráscsoport nevét a keresőmezőbe.

  4. Válassza ki az erőforráscsoportot a listában.

  5. Válassza ki az Event Hubs-névteret az erőforrások listájából.

  6. Az Event Hubs Névtér lapján válassza az Események lehetőséget a bal oldali menüben, majd válassza az eszköztár + Esemény-előfizetés lehetőséget.

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

  7. Az Esemény-előfizetés létrehozása lapon kövesse az alábbi lépéseket:

    1. Adja meg az esemény-előfizetés nevét.

    2. Adja meg a rendszertémakör nevét. A rendszertémák végpontot biztosítanak a feladónak az események küldéséhez. További információ: Rendszertémakörök

    3. Végponttípus esetén válassza az Azure-függvényt.

    4. Végpont esetén válassza ki a hivatkozást.

    5. Az Azure-függvény kiválasztása lapon kövesse az alábbi lépéseket, ha azok nincsenek automatikusan kitöltve.

      1. Válassza ki az Azure-függvényt tartalmazó Azure-előfizetést.
      2. Válassza ki a függvény erőforráscsoportját.
      3. Válassza ki a függvényalkalmazást.
      4. Válassza ki az üzembehelyezési pontot.
      5. Válassza ki az EventGridTriggerMigrateData függvényt.
    6. Az Azure-függvény kiválasztása lapon válassza a Kiválasztás megerősítése lehetőséget.

    7. Ezután az Esemény-előfizetés létrehozása lapon válassza a Létrehozás lehetőséget.

      Screenshot of the Create an event subscription page.

  8. Ellenőrizze, hogy létrejött-e az esemény-előfizetés. Váltson az Event Hubs-névtér Esemény lapján az Esemény-előfizetések lapra.

    Screenshot showing the Event Subscriptions tab on the Events page.

Az alkalmazás futtatása az adatok létrehozásához

Befejezte az eseményközpont beállítását, az SQL-készlet (korábban SQL Data Warehouse), az Azure-függvényalkalmazás és az esemény-előfizetés felosztását. Mielőtt futtatna egy alkalmazást, amely adatokat állít elő az eseményközpont számára, konfigurálnia kell néhány értéket.

  1. Az Azure Portalon lépjen az erőforráscsoportra, ahogyan korábban tette.

  2. Válassza ki az Event Hubs-névteret.

  3. Az Event Hubs Névtér lapján válassza a megosztott hozzáférési szabályzatokat a bal oldali menüben.

  4. Válassza a RootManageSharedAccessKey lehetőséget a szabályzatok listájában.

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

  5. Válassza a másolás gombot a Csatlakozás ion string-primary key text box mellett.

  6. Térjen vissza a Visual Studio-megoldáshoz.

  7. Kattintson a jobb gombbal a WindTurbineDataGenerator projektre, és válassza a Beállítás indítási projektként lehetőséget.

  8. A WindTurbineDataGenerator projektben nyissa meg a program.cs fájlt.

  9. Cserélje le <EVENT HUBS NAMESPACE CONNECTION STRING> a portálról másolt kapcsolati sztring.

  10. Ha nem az eseményközpont hubdatamigrationnevét használta, cserélje le <EVENT HUB NAME> az eseményközpont nevét.

    private const string EventHubConnectionString = "Endpoint=sb://demomigrationnamespace.servicebus.windows.net/...";
    private const string EventHubName = "hubdatamigration";
    
  11. Hozza létre a megoldást. Futtassa a WindTurbineGenerator.exe alkalmazást.

  12. Néhány perc elteltével a másik böngészőlapon, ahol meg van nyitva a lekérdezési ablak, lekérdezheti az adattárházban lévő táblát az áttelepített adatokhoz.

    select * from [dbo].[Fact_WindTurbineMetrics]
    

    Screenshot showing the query results.

A megoldás figyelése

Ez a szakasz segít a megoldás monitorozásában vagy hibaelhárításában.

Rögzített adatok megtekintése a tárfiókban

  1. Lépjen az erőforráscsoportra, és válassza ki az eseményadatok rögzítéséhez használt tárfiókot.

  2. A Tárfiók lapon válassza a Bal oldali menü Storage böngészőt.

  3. Bontsa ki a BLOB CONTAINERS elemet, és válassza a windturbinecapture lehetőséget.

  4. Nyissa meg az Event Hubs névterével megegyező nevű mappát a jobb oldali panelen.

  5. Nyissa meg az eseményközponthoz (hubdatamigration) azonos nevű mappát.

  6. Részletezheti a mappákat, és láthatja az AVRO-fájlokat. Példa:

    Screenshot showing the captured file in the storage.

Ellenőrizze, hogy az Event Grid-eseményindító meghívta-e a függvényt

  1. Lépjen az erőforráscsoportra, és válassza ki a függvényalkalmazást.

  2. A középső panelEn válassza a Függvények lapot.

  3. Válassza ki az EventGridTriggerMigrateData függvényt a listából.

  4. A Függvény lapon válassza a Figyelés lehetőséget a bal oldali menüben.

  5. Válassza a Konfigurálás lehetőséget az alkalmazáselemzések konfigurálásához a meghívási naplók rögzítéséhez.

  6. Hozzon létre egy új alkalmazás-Elemzések erőforrást, vagy használjon egy meglévő erőforrást.

  7. Lépjen vissza a függvény Monitor lapjára.

  8. Győződjön meg arról, hogy az eseményeket küldő ügyfélalkalmazás (WindTurbineDataGenerator) továbbra is fut. Ha nem, futtassa az alkalmazást.

  9. Várjon néhány percet (5 perc vagy több) és a Frissítés gombra kattintva tekintse meg a függvényhívásokat.

    Screenshot showing the Function invocations.

  10. Válassza ki a meghívást a részletek megtekintéséhez.

    Az Event Grid elküldi az eseményadatokat az előfizetőknek. Az alábbi példa az eseményközponton keresztüli adatstreamelés során generált eseményadatokat mutatja be egy blobban. Különösen figyelje meg, hogy az fileUrl objektum tulajdonsága data a tároló blobára mutat. A függvényalkalmazás ezzel az URL-címmel kéri le a blobfájlt rögzített adatokkal.

    {
      "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"
    }
    

Ellenőrizze, hogy az adatok a dedikált SQL-készletben találhatók-e

A böngészőlapon, ahol meg van nyitva a lekérdezési ablak, kérdezze le a táblát a dedikált SQL-készletben az áttelepített adatokhoz.

Screenshot showing the final query results.

Következő lépések

  • A minta beállításával és futtatásával kapcsolatos további információért lásd az Event Hubs Capture- és Event Grid-mintát.
  • Ebben az oktatóanyagban létrehozott egy esemény-előfizetést az CaptureFileCreated eseményhez. Az eseményről és az Azure Blob Storage által támogatott összes eseményről az Azure Event Hubsban talál további információt Event Grid-forrásként.
  • Az Event Hubs Capture funkcióval kapcsolatos további információkért tekintse meg az Események rögzítése az Azure Event Hubson keresztül az Azure Blob Storage-ban vagy az Azure Data Lake Storage-ban című témakört.