Delen via


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

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.

Gegevensindeling

  • Gegevens worden gelezen uit de Event Hub in de vorm van EventData-objecten .

  • Zie ondersteunde indelingen.

    Notitie

  • Gegevens kunnen worden gecomprimeerd met behulp van het GZip compressie-algoritme. U kunt dynamisch opgeven Compression 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:

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, PSVSCsv, SOHsv). TSVEMultiJSON
  • 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, Metricen Value) en de eigenschappen die u opneemt en x-opt-offsetzijnx-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:

  1. Wijs het Body veld van de vastgelegde gebeurtenis toe aan een kolom van het type dynamic in de doeltabel.
  2. 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.