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.
-
Felügyelt identitásalapú adatkapcsolat (ajánlott): Az adatforrásokhoz való csatlakozás legbiztonságosabb módja a felügyelt identitásalapú adatkapcsolat használata. Teljes körű vezérlést biztosít az adatforrások adatainak lekéréséhez.
Az adatkapcsolat felügyelt identitással való beállításához a következő lépések szükségesek:
- Adjon hozzá egy felügyelt identitást a fürthöz.
- Adjon engedélyeket a felügyelt identitásnak az adatforráson.
- Állítson be egy felügyelt identitásszabályzatot a céladatbázisokon.
- Hozzon létre egy adatkapcsolatot a felügyelt identitás hitelesítésével az adatok lekéréséhez.
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.
- A migrálási Azure Event Hubs adatainak lekéréséhez legalább Azure Event Hubs adatfogadóval kell rendelkeznie.
Az adatok az eseményközpontból lesznek beolvasva EventData-objektumok formájában.
Lásd a támogatott formátumokat.
Megjegyzés
- Az Event Hubról történő betöltés nem támogatja a RAW formátumot.
- Az Azure Event Hub Schema Registry és a séma nélküli Avro nem támogatott.
Az adatok tömöríthetők a tömörítési
GZip
algoritmussal. Dinamikusan megadhatjaCompression
a 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 .
Az Azure Data Explorer a következő Event Hubs-tulajdonságokat támogatja:
- Betöltési tulajdonságok zárt készlete, amely segít az eseményt a megfelelő táblába irányítani.
- Eseményrendszer-tulajdonságok zárt készlete, amely egy adott leképezés alapján beágyazható az adatokba.
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.
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.
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.
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.
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);
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
, ,TSV
CSV
,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.
Példa táblaséma-leképezésre
Ha az adatok három oszlopot (Timespan
, , és Value
) tartalmaznak, Metric
valamint a és x-opt-offset
a 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-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:
- Képezze le a
Body
rögzített esemény mezőjét a céltábla típusoszlopáradynamic
. - 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.
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
:
- Az Event Hubsban az eseményadat-objektum létrehozásakor ágyazza be az egyéni tulajdonságokat az adatok részeként az
body
objektum szakaszában. - Az Azure Stream Analytics használatával feldolgozhatja az eseményközpont eseményeit, és beágyazhatja az egyéni tulajdonságokat az eseményadatokba. Az Azure Stream Analyticsből natív módon betöltheti az adatokat az Azure Data Explorer kimeneti összekötőjével, vagy átirányíthatja az adatokat egy másik eseményközpontba, és onnan a fürtbe.
- Az Azure Functions használatával adja hozzá az egyéni tulajdonságokat, majd töltse be az adatokat.
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ó.
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.
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
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.
- Adatok betöltése az Event Hubsból az Azure Data Explorerbe
- Eseményközpont-adatkapcsolat létrehozása az Azure Data Explorer számára a C használatával#
- Eseményközpont-adatkapcsolat létrehozása az Azure Data Explorer számára a Python használatával
- Event Hub-adatkapcsolat létrehozása az Azure Data Explorer-hez az Azure Resource Manager sablonnal
- Event Hubs-adatkapcsolatok kezelése az ingyenes fürtön
- Azure Monitor-naplók betöltése és lekérdezése az Azure Data Explorer