Azure Event Hubs gegevensverbinding
Azure Event Hubs is een platform voor het streamen van big data en een service voor het opnemen van gebeurtenissen. Azure Data Explorer biedt continue opname van door de klant beheerde Event Hubs.
Met de Opnamepijplijn van Event Hubs worden gebeurtenissen in verschillende stappen overgedragen naar Azure Data Explorer. U maakt eerst een Event Hub in de Azure Portal. Vervolgens maakt u een doeltabel in Azure Data Explorer waarin de gegevens in een bepaalde indeling worden opgenomen met behulp van de opgegeven opname-eigenschappen. De Event Hubs-verbinding moet de routering van gebeurtenissen kennen. Gegevens kunnen worden ingesloten met geselecteerde eigenschappen op basis van de eigenschappen van het gebeurtenissysteem. Maak een verbinding met Event Hubs om een Event Hub te maken en gebeurtenissen te verzenden. Dit proces kan worden beheerd via de Azure Portal, programmatisch met C# of Python of met de Azure Resource Manager-sjabloon.
Zie Overzicht van gegevensopname in Azure Data Explorer voor algemene informatie over gegevensopname in Azure Data Explorer.
Verificatiemechanismen voor Azure Data Explorer-gegevensverbindingen
-
Gegevensverbinding op basis van beheerde identiteit (aanbevolen): het gebruik van een gegevensverbinding op basis van een beheerde identiteit is de veiligste manier om verbinding te maken met gegevensbronnen. Het biedt volledige controle over de mogelijkheid om gegevens op te halen uit een gegevensbron.
Voor het instellen van een gegevensverbinding met behulp van een beheerde identiteit zijn de volgende stappen vereist:
- Voeg een beheerde identiteit toe aan uw cluster.
- Machtigingen verlenen aan de beheerde identiteit voor de gegevensbron.
- Stel een beleid voor beheerde identiteiten in voor de doeldatabases.
- Maak een gegevensverbinding met behulp van de verificatie van de beheerde identiteit om gegevens op te halen.
Waarschuwing
Als de machtigingen van de beheerde identiteit worden verwijderd uit de gegevensbron, wordt de gegevensverbinding uitgeschakeld en kunnen er geen gegevens uit de gegevensbron worden opgehaald.
- Gegevensverbinding op basis van een sleutel: als er geen beheerde identiteit is opgegeven in de gegevensverbinding, wordt de verbinding automatisch standaard ingesteld op verificatie op basis van een sleutel. Met op sleutels gebaseerde verbindingen worden gegevens opgehaald met behulp van een resource-verbindingsreeks, zoals de Azure Event Hubs verbindingsreeks. Azure Data Explorer genereert de resource-verbindingsreeks voor de opgegeven resource en slaat deze veilig op in de gegevensverbinding. De verbindingsreeks wordt vervolgens gebruikt om gegevens op te halen uit de gegevensbron.
Waarschuwing
Als de sleutel wordt gedraaid, wordt de gegevensverbinding uitgeschakeld en kunnen er geen gegevens uit de gegevensbron worden opgehaald. U kunt het probleem oplossen door de gegevensverbinding bij te werken of opnieuw te maken.
- Om ervoor te zorgen dat de MI gegevens kan ophalen uit Azure Event Hubs, moet deze ten minste Azure Event Hubs Gegevensontvanger hebben.
Gegevensindeling
Gegevens worden gelezen uit de Event Hub in de vorm van EventData-objecten .
-
Notitie
- Opname vanuit Event Hub biedt geen ondersteuning voor de RAW-indeling.
- Azure Event Hub-schemaregister en Avro met schema's worden niet ondersteund.
Gegevens kunnen worden gecomprimeerd met behulp van het
GZip
compressie-algoritme. U kunt dynamisch opgevenCompression
met behulp van opname-eigenschappen of in de instellingen voor statische gegevensverbinding.Notitie
Gegevenscompressie wordt niet ondersteund voor gecomprimeerde indelingen (Avro, Parquet, ORC, ApacheAvro en W3CLOGFILE). Aangepaste codering en ingesloten systeemeigenschappen worden niet ondersteund voor gecomprimeerde gegevens.
Event Hubs-eigenschappen
Azure Data Explorer ondersteunt de volgende Event Hubs-eigenschappen:
- Een gesloten set opname-eigenschappen, waarmee u de gebeurtenis naar de relevante tabel kunt routeren.
- Een gesloten set gebeurtenissysteemeigenschappen, die kunnen worden ingesloten in de gegevens op basis van een bepaalde toewijzing.
Notitie
Het opnemen van aangepaste Event Hubs-eigenschappen, die worden gebruikt om metagegevens te koppelen aan gebeurtenissen, wordt niet ondersteund. Als u aangepaste eigenschappen wilt opnemen, verzendt u deze naar de hoofdtekst van de gebeurtenisgegevens. Zie Aangepaste eigenschappen opnemen voor meer informatie.
Opname-eigenschappen
Gegevensopname-eigenschappen geven instructies voor het opnameproces, waar de gegevens moeten worden gerouteerd en hoe deze moeten worden verwerkt. U kunt opname-eigenschappen van de opname van gebeurtenissen opgeven met behulp van EventData.Properties. U kunt de volgende eigenschappen instellen:
Notitie
Eigenschapsnamen zijn hoofdlettergevoelig.
Eigenschap | Beschrijving |
---|---|
Database | De hoofdlettergevoelige naam van de doeldatabase. Standaard worden gegevens opgenomen in de doeldatabase die is gekoppeld aan de gegevensverbinding. Gebruik deze eigenschap om de standaarddatabase te overschrijven en gegevens naar een andere database te verzenden. Hiervoor moet u eerst de verbinding instellen als een verbinding met meerdere databases. |
Tabel | De hoofdlettergevoelige naam van de bestaande doeltabel. Overschrijft de Table set in het Data Connection deelvenster. |
Indeling | Gegevensindeling. Overschrijft de Data format set in het Data Connection deelvenster. |
IngestionMappingReference | Naam van de bestaande opnametoewijzing die moet worden gebruikt. Overschrijft de Column mapping set in het Data Connection deelvenster. |
Compressie | Gegevenscompressie, None (standaard) of GZip compressie. |
Encoding | Gegevenscodering, de standaardwaarde is UTF8. Kan een van de door .NET ondersteunde coderingen zijn. |
Tags | Een lijst met tags die moeten worden gekoppeld aan de opgenomen gegevens, opgemaakt als een JSON-matrixtekenreeks. Er zijn gevolgen voor de prestaties bij het gebruik van tags. |
RawHeaders | Geeft aan dat de gebeurtenisbron Kafka is en dat Azure Data Explorer bytematrixdeserialisatie moet gebruiken om andere routeringseigenschappen te lezen. Waarde wordt genegeerd. |
Notitie
Alleen gebeurtenissen die zijn opgenomen nadat u de gegevensverbinding hebt gemaakt, worden opgenomen.
Routering van gebeurtenissen
Wanneer u een gegevensverbinding met uw cluster maakt, kunt u de routering opgeven voor het verzenden van opgenomen gegevens. De standaardroutering is naar de doeltabel die is opgegeven in de verbindingsreeks die is gekoppeld aan de doeldatabase. De standaardroutering voor uw gegevens wordt ook wel statische routering genoemd. U kunt een alternatieve routering voor uw gegevens opgeven door de hierboven genoemde eigenschappen voor gebeurtenisgegevens in te stellen.
Gebeurtenisgegevens routeren naar een alternatieve database
Het routeren van gegevens naar een alternatieve database is standaard uitgeschakeld. Als u de gegevens naar een andere database wilt verzenden, moet u de verbinding eerst instellen als een verbinding met meerdere databases. U kunt dit doen in de Azure Portal Azure Portal, C#, Python of een ARM-sjabloon. De gebruiker, groep, service-principal of beheerde identiteit die wordt gebruikt om databaseroutering toe te staan, moet ten minste de rol inzender en schrijfmachtigingen voor het cluster hebben.
Als u een alternatieve database wilt opgeven, stelt u de eigenschap Databaseopname in.
Waarschuwing
Als u een alternatieve database opgeeft zonder de verbinding in te stellen als een gegevensverbinding met meerdere databases, mislukt de opname.
Gebeurtenisgegevens doorsturen naar een alternatieve tabel
Als u voor elke gebeurtenis een alternatieve tabel wilt opgeven, stelt u de eigenschappen Tabel, Opmaak, Compressie en toewijzingsopname in. De verbinding routeert de opgenomen gegevens dynamisch zoals opgegeven in EventData.Properties, waarbij de statische eigenschappen voor deze gebeurtenis worden overschreven.
In het volgende voorbeeld ziet u hoe u de details van de Event Hub instelt en metrische gegevens over het weer verzendt naar een alternatieve database (MetricsDB) en tabel (WeatherMetrics). De gegevens hebben de JSON-indeling en toewijzing1 is vooraf gedefinieerd in de tabel WeatherMetrics.
// 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);
Toewijzing van gebeurtenissysteemeigenschappen
Systeemeigenschappen slaan eigenschappen op die zijn ingesteld door de Event Hubs-service, op het moment dat de gebeurtenis wordt onderbroken. De gegevensverbinding met de Event Hub kan een geselecteerde set systeemeigenschappen insluiten in de gegevens die worden opgenomen in een tabel op basis van een bepaalde toewijzing.
Notitie
- Het insluiten van systeemeigenschappen wordt ondersteund voor json- en tabelindelingen (bijvoorbeeld
JSON
, , ,CSV
,TSV
,PSV
SCsv
,SOHsv
).TSVE
MultiJSON
- Wanneer u een niet-ondersteunde indeling (i.e. TXT of gecomprimeerde indelingen zoals
Parquet
,Avro
enzovoort) gebruikt, worden de gegevens nog steeds opgenomen, maar worden de eigenschappen genegeerd. - Het insluiten van systeemeigenschappen wordt niet ondersteund wanneer een compressie van Event Hub-berichten is ingesteld. In dergelijke scenario's wordt een geschikte fout verzonden en worden de gegevens niet opgenomen.
- Voor tabelgegevens worden systeemeigenschappen alleen ondersteund voor gebeurtenisberichten met één record.
- Voor json-gegevens worden systeemeigenschappen ook ondersteund voor gebeurtenisberichten met meerdere records. In dergelijke gevallen worden de systeemeigenschappen alleen toegevoegd aan de eerste record van het gebeurtenisbericht.
- Voor
CSV
toewijzing worden eigenschappen toegevoegd aan het begin van de record in de volgorde die wordt vermeld bij het maken van de gegevensverbinding. Vertrouw niet op de volgorde van deze eigenschappen, omdat deze in de toekomst kunnen veranderen. - Voor
JSON
toewijzing worden eigenschappen toegevoegd op basis van eigenschapsnamen in de tabel Systeemeigenschappen .
De Event Hubs-service maakt de volgende systeemeigenschappen beschikbaar:
Eigenschap | Gegevenstype | Beschrijving |
---|---|---|
x-opt-enqueued-time | datetime |
UTC-tijd waarop de gebeurtenis is ge enqueued |
x-opt-sequence-number | long |
Het logische volgordenummer van de gebeurtenis binnen de partitiestroom van de Event Hub |
x-opt-offset | string |
De offset van de gebeurtenis van de Event Hub-partitiestroom. De offset-id is uniek binnen een partitie van de Event Hub-stroom |
x-opt-publisher | string |
De naam van de uitgever, als het bericht is verzonden naar een uitgeverseindpunt |
x-opt-partition-key | string |
De partitiesleutel van de bijbehorende partitie die de gebeurtenis heeft opgeslagen |
Wanneer u met Event Hubs van IoT Central werkt, kunt u ook IoT Hub systeemeigenschappen insluiten in de nettolading. Zie systeemeigenschappen IoT Hub voor de volledige lijst.
Als u Gebeurtenissysteemeigenschappen hebt geselecteerd in de sectie Gegevensbron van de tabel, moet u de eigenschappen opnemen in het tabelschema en de toewijzing.
Voorbeelden van schematoewijzing
Voorbeeld van tabelschematoewijzing
Als uw gegevens drie kolommen bevatten (Timespan
, Metric
en Value
) en de eigenschappen die u opneemt en x-opt-offset
zijnx-opt-enqueued-time
, maakt of wijzigt u het tabelschema met behulp van deze opdracht:
.create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)
Voorbeeld van CSV-toewijzing
Voer de volgende opdrachten uit om gegevens toe te voegen aan het begin van de record. Ordinale waarden noteren.
.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"}}'
']'
Voorbeeld van JSON-toewijzing
Gegevens worden toegevoegd met behulp van de toewijzing van systeemeigenschappen. Voer deze opdrachten uit:
.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"}}'
']'
Schematoewijzing voor Event Hub Capture Avro-bestanden
Een manier om Event Hub-gegevens te gebruiken, is door gebeurtenissen vast te leggen via Azure Event Hubs in Azure Blob Storage of Azure Data Lake Storage. Vervolgens kunt u de opnamebestanden opnemen terwijl ze worden geschreven met behulp van een Event Grid-gegevensverbinding in Azure Data Explorer.
Het schema van de opnamebestanden verschilt van het schema van de oorspronkelijke gebeurtenis die naar Event Hub is verzonden. U moet het doeltabelschema ontwerpen met dit verschil in gedachten. De nettolading van de gebeurtenis wordt in het opnamebestand weergegeven als een bytematrix en deze matrix wordt niet automatisch gedecodeerd door de Event Grid Azure Data Explorer-gegevensverbinding. Zie Het verkennen van vastgelegde Avro-bestanden in Azure Event Hubs voor meer specifieke informatie over het bestandsschema voor Event Hub Avro-opnamegegevens.
De nettolading van de gebeurtenis correct decoderen:
- Wijs het
Body
veld van de vastgelegde gebeurtenis toe aan een kolom van het typedynamic
in de doeltabel. - Pas een updatebeleid toe waarmee de bytematrix wordt geconverteerd naar een leesbare tekenreeks met behulp van de functie unicode_codepoints_to_string().
Aangepaste eigenschappen opnemen
Bij het opnemen van gebeurtenissen uit Event Hubs worden gegevens uit de body
sectie van het gebeurtenisgegevensobject genomen.
Aangepaste eigenschappen van Event Hubs worden echter gedefinieerd in de properties
sectie van het object en worden niet opgenomen. Als u klanteigenschappen wilt opnemen, moet u deze insluiten in de gegevens in body
de sectie van het object.
In het volgende voorbeeld wordt het gebeurtenisgegevensobject met de aangepaste eigenschap customProperty
zoals gedefinieerd door Event Hubs (links) vergeleken met de ingesloten eigenschap die is vereist voor opname (rechts).
{
"body":{
"value": 42
},
"properties":{
"customProperty": "123456789"
}
}
{
"body":{
"value": 42,
"customProperty": "123456789"
}
}
U kunt een van de volgende methoden gebruiken om aangepaste eigenschappen in te sluiten in de gegevens in body
de sectie van het gebeurtenisgegevensobject:
- Wanneer u in Event Hubs het gebeurtenisgegevensobject maakt, sluit u de aangepaste eigenschappen in als onderdeel van de gegevens in de
body
sectie van het object. - Gebruik Azure Stream Analytics om gebeurtenissen uit de Event Hub te verwerken en de aangepaste eigenschappen in de gebeurtenisgegevens in te sluiten. Vanuit Azure Stream Analytics kunt u de gegevens systeemeigen opnemen met behulp van de Azure Data Explorer-uitvoerconnector, of de gegevens routeren naar een andere Event Hub en van daaruit naar uw cluster.
- Gebruik Azure Functions om de aangepaste eigenschappen toe te voegen en vervolgens de gegevens op te nemen.
Event Hub-gegevensverbinding tussen regio's
Voor de beste prestaties maakt u alle volgende resources in dezelfde regio als het cluster. Als er geen ander alternatief is, kunt u overwegen om de Premium - of Dedicated Event Hub-lagen te gebruiken. Vergelijking van Event Hub-lagen vindt u hier.
Een Event Hub maken
Als u er nog geen hebt, maakt u een Event Hub. Verbinding maken met Event Hub kan worden beheerd via de Azure Portal, programmatisch met C# of Python, of met de Azure Resource Manager-sjabloon.
Notitie
- De mogelijkheid om dynamisch partities toe te voegen na het maken van een Event Hub is alleen beschikbaar met Event Hubs Premium- en Dedicated-lagen. Houd rekening met de schaal op lange termijn bij het instellen van het aantal partities.
- De consumentengroep moet uniek zijn per consument. Maak een consumentengroep die is toegewezen aan Azure Data Explorer-verbinding.
Gebeurtenissen verzenden
Bekijk de voorbeeld-app waarmee gegevens worden gegenereerd en verzonden naar een Event Hub.
Zie Gegevens van Event Hub opnemen in Azure Data Explorer voor een voorbeeld van het genereren van voorbeeldgegevens
Oplossing voor herstel na geo-noodgeval instellen
Event Hub biedt een oplossing voor herstel na geo-noodgeval .
Azure Data Explorer biedt geen ondersteuning voor Alias
Event Hub-naamruimten. Als u herstel na geo-noodgeval in uw oplossing wilt implementeren, maakt u twee Event Hub-gegevensverbindingen: één voor de primaire naamruimte en één voor de secundaire naamruimte. Azure Data Explorer luistert naar beide Event Hub-verbindingen.
Notitie
Het is de verantwoordelijkheid van de gebruiker om een failover van de primaire naamruimte naar de secundaire naamruimte te implementeren.
Gerelateerde inhoud
- Gegevens uit Event Hub opnemen in Azure Data Explorer
- Een Event Hub-gegevensverbinding maken voor Azure Data Explorer met behulp van C#
- Een Event Hub-gegevensverbinding maken voor Azure Data Explorer met behulp van Python
- Een Event Hub-gegevensverbinding maken voor Azure Data Explorer met behulp van azure Resource Manager-sjabloon
- Event Hubs-gegevensverbindingen beheren in uw gratis cluster
- Azure Monitor-logboeken opnemen en er query's op uitvoeren met Azure Data Explorer