Azure Event Hubs-adatkapcsolat

Azure Event Hubs egy big data streamelési platform és eseménybetöltési szolgáltatás. Az Azure Data Explorer folyamatos betöltést biztosít az ügyfél által felügyelt Event Hubsból.

Az Event Hubs betöltési folyamata több lépésben továbbítja az eseményeket az Azure Data Explorer. Először létre kell hoznia egy eseményközpontot a Azure Portal. Ezután létre kell hoznia egy céltáblát az Azure-ban Data Explorer, amelybe az adatok egy adott formátumban lesznek betöltve a megadott betöltési tulajdonságok használatával. Az Event Hubs-kapcsolatnak ismernie kell az események útválasztását. Előfordulhat, hogy az adatok az eseményrendszer tulajdonságainak megfelelően vannak beágyazva a kiválasztott tulajdonságokba. Eseményközpont létrehozásához és események küldéséhez hozzon létre kapcsolatot az Event Hubs szolgáltatással. Ez a folyamat a Azure Portal keresztül kezelhető, programozott módon C# vagy Python használatával, vagy az Azure Resource Manager sablonnal.

Az Azure Data Explorer adatbetöltésével kapcsolatos általános információkért lásd: Az Azure Data Explorer adatbetöltés áttekintése.

Az Azure Data Explorer adatkapcsolat hitelesítési mechanizmusai

Figyelemfelhívás

Ha a felügyelt identitás engedélyeit eltávolítják az adatforrásból, az adatkapcsolat le van tiltva, és nem tud adatokat lekérni az adatforrásból.

  • Kulcsalapú adatkapcsolat: Ha az adatkapcsolatban nincs megadva felügyelt identitás, a kapcsolat automatikusan kulcsalapú hitelesítésre lesz alapértelmezés szerint. A kulcsalapú kapcsolatok erőforrás-kapcsolati karakterlánc, például a Azure Event Hubs kapcsolati karakterlánc használatával lekérik az adatokat. Az Azure Data Explorer létrehozza az erőforrás-kapcsolati karakterlánc a megadott erőforráshoz, és biztonságosan menti azt az adatkapcsolatban. A kapcsolati karakterlánc ezután adatok beolvasására szolgál az adatforrásból.

Figyelemfelhívás

Ha a kulcs el van forgatva, az adatkapcsolat le van tiltva, és nem tud adatokat lekérni az adatforrásból. A probléma megoldásához frissítse vagy hozza létre újra az adatkapcsolatot.

Adatformátum

  • Az adatok az eseményközpontból lesznek beolvasva EventData-objektumok formájában.

  • Lásd a támogatott formátumokat.

    Megjegyzés

  • Az adatok tömöríthetők a tömörítési GZip algoritmussal. Dinamikusan megadhatja Compressiona betöltési tulajdonságokat, vagy a statikus adatkapcsolati beállításokat.

    Megjegyzés

    Az adattömörítés tömörített formátumok (Avro, Parquet, ORC, ApacheAvro és W3CLOGFILE) esetében nem támogatott. A tömörített adatok nem támogatják az egyéni kódolást és a beágyazott rendszertulajdonságokat .

Event Hubs-tulajdonságok

Az Azure Data Explorer a következő Event Hubs-tulajdonságokat támogatja:

Megjegyzés

Az Event Hubs egyéni tulajdonságainak betöltése, amelyek a metaadatok eseményekhez való társítására szolgálnak, nem támogatottak. Ha egyéni tulajdonságokat kell betöltenie, küldje el őket az eseményadatok törzsébe. További információ: Egyéni tulajdonságok betöltése.

Betöltési tulajdonságok

A betöltési tulajdonságok útmutatást adnak a betöltési folyamathoz, az adatok átirányításához és feldolgozásának módjához. Az eventdata.properties paranccsal adhatja meg az eseménybetöltés betöltési tulajdonságait. A következő tulajdonságokat állíthatja be:

Megjegyzés

A tulajdonságnevek megkülönböztetik a kis- és nagybetűket.

Tulajdonság Leírás
Adatbázis A céladatbázis kis- és nagybetűkre érzékeny neve. Alapértelmezés szerint az adatok az adatkapcsolattal társított céladatbázisba kerülnek. Ezzel a tulajdonságkal felülbírálhatja az alapértelmezett adatbázist, és adatokat küldhet egy másik adatbázisba. Ehhez először többadatbázisos kapcsolatként kell beállítania a kapcsolatot.
Tábla A meglévő céltábla kis- és nagybetűkre érzékeny neve. Felülbírálja a Table halmazt a Data Connection panelen.
Formátum Adatformátum. Felülbírálja a Data format halmazt a Data Connection panelen.
IngestionMappingReference A használni kívánt betöltési leképezés neve. Felülbírálja a Column mapping halmazt a Data Connection panelen.
Tömörítés Adattömörítés, None (alapértelmezett) vagy GZip tömörítés.
Encoding Az adatkódolás alapértelmezett értéke UTF8. A .NET által támogatott kódolások bármelyike lehet.
Címkék A betöltött adatokhoz társítandó címkék listája JSON-tömbsztringként formázva. A címkék használata teljesítménybeli következményekkel jár .
RawHeaders Azt jelzi, hogy az eseményforrás Kafka, és az Azure Data Explorer bájttömb deszerializálást kell használnia az egyéb útválasztási tulajdonságok olvasásához. Az érték figyelmen kívül lesz hagyva.

Megjegyzés

Csak az adatkapcsolat létrehozása után beküldött események lesznek betöltve.

Események útválasztása

Amikor adatkapcsolatot hoz létre a fürthöz, megadhatja a betöltött adatok küldésének útvonalát. Az alapértelmezett útválasztás a céladatbázishoz társított kapcsolati karakterlánc megadott céltáblához tartozik. Az adatok alapértelmezett útválasztását statikus útválasztásnak is nevezik. Az adatok alternatív útválasztását a fent említett eseményadatok tulajdonságainak beállításával adhatja meg.

Eseményadatok átirányítása másik adatbázisba

Az adatok másik adatbázisba való átirányítása alapértelmezés szerint ki van kapcsolva. Ha az adatokat egy másik adatbázisba szeretné küldeni, először többadatbázisos kapcsolatként kell beállítania a kapcsolatot. Ezt a Azure Portal Azure Portal, C#, Python vagy ARM-sablonban teheti meg. Az adatbázis-útválasztás engedélyezéséhez használt felhasználónak, csoportnak, szolgáltatásnévnek vagy felügyelt identitásnak legalább közreműködői szerepkörrel és írási engedélyekkel kell rendelkeznie a fürtön.

Alternatív adatbázis megadásához állítsa be az Adatbázis-betöltési tulajdonságot.

Figyelmeztetés

Ha egy másik adatbázist úgy ad meg, hogy nem állítja be a kapcsolatot többadatbázisos adatkapcsolatként, a betöltés meghiúsul.

Eseményadatok átirányítása másik táblába

Ha minden eseményhez egy másik táblát szeretne megadni, állítsa be a Táblázat, a Formátum, a Tömörítés és a Leképezés betöltési tulajdonságait. A kapcsolat dinamikusan irányítja a betöltött adatokat az EventData.Properties paraméterben megadottak szerint, felülírva az esemény statikus tulajdonságait.

Az alábbi példa bemutatja, hogyan állíthatja be az eseményközpont adatait, és hogyan küldhet időjárási metrikaadatokat alternatív adatbázisba (MetricsDB) és táblába (WeatherMetrics). Az adatok JSON formátumban vannak, és a leképezés1 előre meg van határozva a WeatherMetrics táblában.

// This sample uses Azure.Messaging.EventHubs which is a .Net Framework library.
await using var producerClient = new EventHubProducerClient("<eventHubConnectionString>");
// Create the event and add optional "dynamic routing" properties
var eventData = new EventData(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(
    new { Timestamp = DateTime.UtcNow, MetricName = "Temperature", Value = 32 }
)));
eventData.Properties.Add("Database", "MetricsDB");
eventData.Properties.Add("Table", "WeatherMetrics");
eventData.Properties.Add("Format", "json");
eventData.Properties.Add("IngestionMappingReference", "mapping1");
eventData.Properties.Add("Tags", "['myDataTag']");
var events = new[] { eventData };
// Send events
await producerClient.SendAsync(events);

Eseményrendszer tulajdonságainak leképezése

A rendszertulajdonságok az Event Hubs szolgáltatás által az esemény lekérdezésekor beállított tulajdonságokat tárolják. Az eseményközponthoz való adatkapcsolat egy kiválasztott rendszertulajdonság-készletet ágyazhat be a táblába betöltött adatokba egy adott leképezés alapján.

Megjegyzés

  • A rendszertulajdonságok beágyazása json és táblázatos formátumok esetén támogatott (pl. JSON, MultiJSON, , TSVCSV, PSV, SCsv, SOHsv). TSVE
  • Ha nem támogatott formátumot (i.e. TXT vagy tömörített formátumot, például Parquet, Avro stb.) használ, a rendszer továbbra is betölti az adatokat, de a tulajdonságok figyelmen kívül lesznek hagyva.
  • A rendszertulajdonságok beágyazása nem támogatott, ha az Event Hub-üzenetek tömörítése be van állítva. Ilyen esetekben a rendszer megfelelő hibát ad ki, és az adatok nem lesznek betöltve.
  • Táblázatos adatok esetén a rendszertulajdonságok csak egyrekordos eseményüzenetekhez támogatottak.
  • JSON-adatok esetén a rendszertulajdonságok többrekordos eseményüzenetekhez is támogatottak. Ilyen esetekben a rendszertulajdonságok csak az eseményüzenet első rekordjára kerülnek.
  • A leképezéshez CSV a rendszer a rekord elején adja hozzá a tulajdonságokat az adatkapcsolat létrehozásakor felsorolt sorrendben. Ne hagyatkozzon ezeknek a tulajdonságoknak a sorrendjére, mert az a jövőben változhat.
  • A leképezéshez JSON a rendszer a Rendszertulajdonságok tábla tulajdonságnevei szerint adja hozzá a tulajdonságokat.

Az Event Hubs szolgáltatás a következő rendszertulajdonságokat teszi elérhetővé:

Tulajdonság Adattípus Leírás
x-opt-enqueued-time datetime Az esemény beiktatásakor (UTC)
x-opt-sequence-number long Az esemény logikai sorszáma az eseményközpont partícióstreamében
x-opt-offset string Az esemény eltolása az eseményközpont partícióstreaméből. Az eltolás azonosítója egyedi az eseményközpont-stream partíciójában
x-opt-publisher string A közzétevő neve, ha az üzenet közzétevői végpontra lett elküldve
x-opt-partition-key string Az eseményt tároló megfelelő partíció partíciókulcsa

Ha az IoT Central eseményközpontjaival dolgozik, IoT Hub rendszertulajdonságokat is beágyazhat a hasznos adatokba. A teljes listát a IoT Hub rendszertulajdonságok című témakörben találja.

Ha a tábla Adatforrás szakaszában az Eseményrendszer-tulajdonságok lehetőséget választotta, a tulajdonságokat bele kell foglalnia a tábla sémába és leképezésbe.

Sémaleképezési példák

Példa táblaséma-leképezésre

Ha az adatok három oszlopot (Timespan, , és Value) tartalmaznak, Metricvalamint a és x-opt-offseta tulajdonságokatx-opt-enqueued-time, hozza létre vagy módosítsa a táblasémát az alábbi paranccsal:

    .create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)

PÉLDA CSV-leképezésre

Az alábbi parancsok futtatásával adjon hozzá adatokat a rekord elejéhez. Jegyezze fel a sorszámértékeket.

    .create table TestTable ingestion csv mapping "CsvMapping1"
    '['
    '   { "column" : "Timespan", "Properties":{"Ordinal":"2"}},'
    '   { "column" : "Metric", "Properties":{"Ordinal":"3"}},'
    '   { "column" : "Value", "Properties":{"Ordinal":"4"}},'
    '   { "column" : "EventHubEnqueuedTime", "Properties":{"Ordinal":"0"}},'
    '   { "column" : "EventHubOffset", "Properties":{"Ordinal":"1"}}'
    ']'

Példa JSON-leképezésre

Az adatok hozzáadása a rendszertulajdonságok leképezésével történik. Futtassa a következő parancsokat:

    .create table TestTable ingestion json mapping "JsonMapping1"
    '['
    '    { "column" : "Timespan", "Properties":{"Path":"$.timestamp"}},'
    '    { "column" : "Metric", "Properties":{"Path":"$.metric"}},'
    '    { "column" : "Value", "Properties":{"Path":"$.value"}},'
    '    { "column" : "EventHubEnqueuedTime", "Properties":{"Path":"$.x-opt-enqueued-time"}},'
    '    { "column" : "EventHubOffset", "Properties":{"Path":"$.x-opt-offset"}}'
    ']'

Az Event Hub capture Avro-fájljainak sémaleképezése

Az Event Hub-adatok felhasználásának egyik módja az események rögzítése Azure Event Hubs keresztül Azure Blob Storage vagy Azure Data Lake Storage. Ezután betöltheti a rögzítési fájlokat, amint meg vannak írva egy Event Grid-adatkapcsolattal az Azure Data Explorer.

A rögzítési fájlok sémája eltér az Event Hubnak küldött eredeti esemény sémájától. Ezt a különbséget szem előtt tartva érdemes megtervezni a céltábla sémáját. Pontosabban az esemény hasznos adatai bájttömbként jelennek meg a rögzítési fájlban, és ezt a tömböt nem dekódolja automatikusan az Event Grid Azure Data Explorer adatkapcsolat. Az Event Hub Avro adatrögzítési adatainak fájlsémával kapcsolatos további információkért lásd: Rögzített Avro-fájlok felderítése Azure Event Hubs.

Az esemény hasznos adatainak helyes dekódolása:

  1. Képezze le a Body rögzített esemény mezőjét a céltábla típusoszlopára dynamic .
  2. Alkalmazzon egy frissítési szabályzatot , amely a bájttömböt olvasható sztringgé alakítja a unicode_codepoints_to_string() függvénnyel.

Egyéni tulajdonságok betöltése

Amikor eseményeket betölt az Event Hubsból, az adatok az body eseményadat-objektum szakaszából származnak. Az Event Hubs egyéni tulajdonságai azonban az properties objektum szakaszában vannak definiálva, és nincsenek betöltve. Az ügyféltulajdonságok betöltéséhez beágyaznia kell őket az objektum szakaszában lévő adatokba body .

Az alábbi példa összehasonlítja az Event Hubs által definiált egyéni tulajdonságot customProperty tartalmazó eseményadat-objektumot a betöltéshez szükséges beágyazott tulajdonsággal (jobbra).

{
"body":{
"value": 42
},
"properties":{
"customProperty": "123456789"
}
}
{
"body":{
"value": 42,
"customProperty": "123456789"
}
}

Az alábbi módszerek egyikével egyéni tulajdonságokat ágyazhat be az adatokba az eseményadat-objektum szakaszában body :

Régiók közötti Event Hub-adatkapcsolat

A legjobb teljesítmény érdekében hozza létre az összes alábbi erőforrást ugyanabban a régióban, mint a fürt. Ha nincs más alternatíva, fontolja meg a prémium vagy dedikált eseményközponti szintek használatát. Az Event Hub-szintek összehasonlítása itt található.

Eseményközpont létrehozása

Ha még nincs ilyenje, hozzon létre egy eseményközpontot. Az eseményközponthoz való csatlakozás a Azure Portal keresztül, programozott módon, C# vagy Python használatával, vagy az Azure Resource Manager sablonnal kezelhető.

Megjegyzés

  • A partíciók dinamikus hozzáadásának lehetősége az eseményközpontok létrehozása után csak az Event Hubs Premium és a Dedikált szintek esetében érhető el. A partíciók számának beállításakor vegye figyelembe a hosszú távú skálázást.
  • A fogyasztói csoportnak fogyasztónként egyedinek kell lennie. Hozzon létre egy, az Azure Data Explorer kapcsolathoz dedikált fogyasztói csoportot.

Események küldése

Tekintse meg azt a mintaalkalmazást , amely adatokat hoz létre, és elküldi azokat egy eseményközpontnak.

Példa a mintaadatok létrehozására: Adatok betöltése az eseményközpontból az Azure Data Explorer

Georedundáns vészhelyreállítási megoldás beállítása

Az Event Hub georedundáns vészhelyreállítási megoldást kínál. Az Azure Data Explorer nem támogatja Alias az eseményközpontok névtereit. A georedundáns helyreállítás megoldásban való implementálásához hozzon létre két eseményközpont-adatkapcsolatot: egyet az elsődleges névtérhez, egyet pedig a másodlagos névtérhez. Az Azure Data Explorer mindkét eseményközpont-kapcsolatot figyeli.

Megjegyzés

A felhasználó felelőssége, hogy feladatátvételt hajtson végre az elsődleges névtérből a másodlagos névtérbe.