Delen via


Azure Event Hubs-gegevensverbinding

Azure Event Hubs is een streamingplatform voor big data en een service voor gebeurtenisopname. Azure Data Explorer biedt continue opname van door de klant beheerde Event Hubs.

De Event Hubs-opnamepijplijn draagt in verschillende stappen gebeurtenissen over naar Azure Data Explorer. Eerst maakt u een Event Hub in Azure Portal. Maak vervolgens een doeltabel in Azure Data Explorer waarin de gegevens in een bepaalde indelingworden opgenomen, met gebruik van de verstrekte opname-eigenschappen. De Event Hubs-verbinding moet rekening houden met gebeurtenissenroutering. Gegevens kunnen worden ingesloten met geselecteerde eigenschappen volgens de eigenschappen van het gebeurtenissysteem. Breng een verbinding tot stand met Event Hubs om een event hub te maken en events te verzenden. Dit proces kan worden beheerd via 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.

Verificatieopties voor gegevensverbinding in Azure Data Explorer

  • Beheerde identiteit gegevensverbinding (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 beheerde identiteit zijn de volgende stappen vereist:

    1. Een beheerde identiteit toevoegen aan uw cluster.
    2. Machtigingen verlenen aan de beheerde identiteit op de gegevensbron. Als u gegevens wilt ophalen uit Azure Event Hubs, moet de beheerde identiteit Azure Event Hubs-gegevensontvanger machtigingen hebben.
    3. Stel een beleid voor beheerde identiteiten in op de doeldatabases.
    4. Maak een gegevensverbinding met behulp van de verificatie van beheerde identiteiten om gegevens op te halen.

    Waarschuwing

    Als de machtigingen voor beheerde identiteiten worden verwijderd uit de gegevensbron, werkt de gegevensverbinding niet meer en kan de gegevens niet worden opgehaald uit de gegevensbron.

  • Gegevensverbinding op basis van een sleutel: als er geen verificatie van een beheerde identiteit is opgegeven voor de gegevensverbinding, wordt de verbinding automatisch standaard ingesteld op verificatie op basis van sleutels. Met sleutelverbindingen worden gegevens opgehaald via een resourceverbindingsreeks, zoals de Azure Event Hubs-verbindingsreeks. Azure Data Explorer haalt de verbindingsreeks voor de resource op voor de opgegeven resource en slaat deze veilig op. De verbindingsreeks wordt vervolgens gebruikt om gegevens op te halen uit de gegevensbron.

    Waarschuwing

    Als de sleutel wordt geroteerd, werkt de gegevensverbinding niet meer en kan de gegevens niet worden opgehaald uit de gegevensbron. U kunt het probleem oplossen door de gegevensverbinding bij te werken of opnieuw te maken.

Gegevensopmaak

Notitie

  • Het inlezen van Event Hubs biedt geen ondersteuning voor RAW-indeling.
  • Azure Event Hubs Schema Registry en avro zonder schema worden niet ondersteund.
  • Gegevens kunnen worden gecomprimeerd met behulp van het gzip compressie-algoritme. U kunt Compression dynamisch specificeren met behulp van de -vereisten voor gegevensopname, of in de instellingen voor de statische gegevensverbinding.
  • Gegevenscompressie wordt niet ondersteund voor binaire indelingen (Avro, ApacheAvro, Parquet, ORC en W3CLOGFILE).
  • Aangepaste codering en ingesloten systeemeigenschappen worden niet ondersteund met binaire indelingen en gecomprimeerde gegevens.
  • Wanneer u binaire formatten (Avro, ApacheAvro, Parquet, ORC, en W3CLOGFILE) en opnametoewijzingengebruikt, moet de volgorde van de velden in de opnametoewijzingsdefinitie overeenkomen met de volgorde van de corresponderende kolommen in de tabel.

Event Hubs-eigenschappen

Azure Data Explorer ondersteunt de volgende Event Hubs-eigenschappen:

  • Een gesloten set ingestie-eigenschappen , waardoor de gebeurtenis naar de relevante tabel wordt gerouteerd.
  • Een gesloten set eigenschappen van het gebeurtenissysteem , die in de gegevens kunnen worden opgenomen op basis van een bepaalde toewijzing.

Notitie

Het opnemen van aangepaste eigenschappen in Event Hubs, die worden gebruikt om metagegevens aan gebeurtenissen te koppelen, wordt niet ondersteund. Als u aangepaste eigenschappen wilt opnemen, verzendt u deze in de hoofdtekst van de gebeurtenisgegevens. Voor meer informatie, zie Aangepaste eigenschappen opnemen.

Opname-eigenschappen

Opname-eigenschappen geven instructies aan het opnameproces over waar de gegevens naartoe moeten worden gerouteerd en hoe ze 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.

Vastgoed Beschrijving
Gegevensbank 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. Hiermee wordt de Table instelling op het Data Connection deelvenster overschreven.
Formaat Gegevensindeling. Hiermee wordt de Data format instelling op het Data Connection deelvenster overschreven.
IngestionMappingReference Naam van de bestaande opnametoewijzing die gebruikt moet worden. Hiermee wordt de Column mapping instelling op het Data Connection deelvenster overschreven.
Compressie Gegevenscompressie, None (standaard) of gzip.
Codering Gegevenscodering, de standaardwaarde is UTF8. Dit kunnen .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.
Ruwe headers Geeft aan dat de gebeurtenisbron Kafka is en Azure Data Explorer bytematrix deserialisatie moet gebruiken om andere routeringseigenschappen te lezen. Waarde wordt genegeerd.

Notitie

Alleen gebeurtenissen die worden opgehaald nadat u de gegevensverbinding hebt gemaakt, worden opgenomen, tenzij er een aangepaste begindatum voor het ophalen is opgegeven. In elk geval mag de lookbackperiode de werkelijke retentieperiode van Event Hub niet overschrijden.

Routering van gebeurtenissen

Wanneer u een gegevensverbinding met uw cluster maakt, kunt u de routering opgeven voor waar opgenomen gegevens moeten worden verzonden. 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 routeringgenoemd. U kunt een alternatieve routerings- en verwerkingsopties voor uw gegevens opgeven door een of meer eigenschappen van gebeurtenisgegevens in te stellen die in de vorige alinea zijn vermeld.

Notitie

Event Hubs-gegevensverbinding probeert alle gebeurtenissen die worden gelezen uit de Event Hub te verwerken en elke gebeurtenis die om welke reden dan ook niet kan worden verwerkt, wordt gerapporteerd als opnamefout. Lees hoe u Azure Data Explorer-opname kunt bewaken hier.

Gebeurtenisgegevens routeren naar een alternatieve database

Routering van gegevens naar een alternatieve database is standaard uitgeschakeld. Als u de gegevens naar een andere database wilt verzenden, moet u eerst de verbinding instellen als een verbinding met meerdere databases. Deze functie kan worden ingeschakeld in Azure Portal Azure Portal, met C# of Python-beheer-SDK's of met een ARM-sjabloon. De gebruiker, groep, service-principal of beheerde identiteit die wordt gebruikt om databaseroutering toe te staan, moet ten minste de contributor rol hebben en schrijfrechten voor het cluster.

Als u een alternatieve database wilt opgeven, stelt u de instellingseigenschap Databasevoor gegevensinvoer in.

Waarschuwing

Als u een alternatieve database opgeeft zonder de verbinding in te stellen als een gegevensverbinding met meerdere databases, mislukt de opname.

Gebeurtenisgegevens routeren naar een alternatieve tabel

Als u voor elke gebeurtenis een alternatieve tabel wilt opgeven, stelt u de Tabel, Formaat, Compressieen de toewijzing van de opname-eigenschappenin. De verbinding routeert de opgenomen gegevens dynamisch zoals opgegeven in de 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 de tabel (WeatherMetrics). De gegevens zijn in JSON-indeling en toewijzing1 is voorafgaand gedefinieerd in 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 systeemeigenschappen van Event Hubs

Systeemeigenschappen zijn velden die zijn ingesteld door de Event Hubs-service, op het moment dat de gebeurtenis wordt geïnventueerd. Azure Data Explorer Event Hubs-gegevensverbinding kan een vooraf gedefinieerde set systeemeigenschappen insluiten in de gegevens die zijn opgenomen in een tabel op basis van een bepaalde toewijzing.

Notitie

  • Het insluiten van systeemeigenschappen wordt ondersteund voor json- en tabellaire indelingen (d.w.w.v. JSON, MultiJSON, CSV, TSV, PSV, SCsv, SOHsv, TSVE).
  • 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 gegenereerd 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 aan het begin van de gegevensrecord toegevoegd, in de volgorde die bij het maken van de gegevensverbinding is vermeld. Vertrouw niet op de volgorde van deze eigenschappen, omdat deze in de toekomst kan veranderen.
  • Voor de JSON toewijzing worden eigenschappen toegevoegd op basis van eigenschapsnamen in de tabel met systeemeigenschappen.

De Event Hubs-service maakt de volgende systeemeigenschappen beschikbaar:

Vastgoed Gegevenssoort Beschrijving
x-opt-enqueued-time datetime UTC-tijd waarop de gebeurtenis in de wachtrij is geplaatst
x-opt-volgnummer long Het logische volgnummer van de gebeurtenis binnen de partitiestroom van de Event Hub
x-opt-offset string De verschuiving van de gebeurtenis uit de partitiestroom van de Event Hub. De offset-id is uniek binnen een partitie van de Event Hub-stream
x-opt-uitgever string De naam van de uitgever, als het bericht is verzonden naar een uitgeverseindpunt
x-opt-partitie-sleutel string De partitiesleutel van de bijbehorende partitie die de gebeurtenis heeft opgeslagen

Wanneer u met IoT Central Event Hubs werkt, kunt u ook systeemeigenschappen van IoT Hub insluiten in de nettolading. Zie Systeemeigenschappen van IoT Hubvoor de volledige lijst.

Als u Gebeurtenissysteemeigenschappen hebt geselecteerd in de sectie Gegevensbron van de tabel, moet u de eigenschappen in het tabelschema en de toewijzing opnemen.

Voorbeelden van 'schema mapping'

Voorbeeld van tabelschematoewijzing

Als uw gegevens drie kolommen (TimeStamp, MetricName, en Value) bevatten en de eigenschappen die u opneemt x-opt-enqueued-time en x-opt-offset zijn, maakt of wijzigt u het tabelschema met behulp van deze opdracht:

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

CSV-voorbeeldoverzicht

Voer de volgende opdrachten uit om gegevens toe te voegen aan het begin van de record. Let op rangtelwaarden.

    .create table TestTable ingestion csv mapping "CsvMapping1"
    '['
    '   { "column" : "TimeStamp", "Properties":{"Ordinal":"2"}},'
    '   { "column" : "MetricName", "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 systeemeigenschappentoewijzing. Voer deze opdrachten uit:

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

Schematoewijzing voor het vastleggen van Avro-bestanden via Event Hubs

Een manier om Event Hubs-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 Hubs wordt 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 Azure Data Explorer-gegevensverbinding van Event Grid. Zie Verken vastgelegde Avro-bestanden in Azure Event Hubsvoor meer informatie over het bestandsschema voor Event Hubs 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 opgehaald uit de sectie body van het gebeurtenisgegevensobject. Event Hubs aangepaste eigenschappen 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 sectie van het object.

In het volgende voorbeeld wordt het gebeurtenisgegevensobject met aangepaste eigenschap customProperty vergeleken met de als door Event Hubs gedefinieerde (links) en de ingesloten eigenschap die nodig is voor invoer (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 sectie van het gebeurtenisgegevensobject:

  • Sluit in Event Hubs bij het maken van het gebeurtenisgegevensobject de aangepaste eigenschappen in als onderdeel van de gegevens in de sectie body van het object.
  • Gebruik Azure Stream Analytics om gebeurtenissen van de Event Hub te te verwerken en de aangepaste eigenschappen in te sluiten in de gebeurtenisgegevens. 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 daar naar uw cluster.
  • Gebruik Azure Functions om de aangepaste eigenschappen toe te voegen en de gegevens vervolgens op te nemen.

Event Hubs maken

Maak een Event Hub aan als u er nog geen hebt, . 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 partities dynamisch toe te voegen nadat u een Event Hub hebt gemaakt, 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.
  • Consumentengroep moet uniek zijn per consument. Maak een toegewezen consumentengroep voor elke Azure Data Explorer-gegevensverbinding.

Event Hubs-gegevensverbinding tussen regio's

Voor de beste prestaties maakt u de Event Hub in dezelfde regio als het cluster. Als dit niet mogelijk is, kunt u overwegen om Premium- of Dedicated Event Hubs-lagen te gebruiken. Zie Azure Event Hubs-lagen vergelijkenvoor een vergelijking van lagen.

Gebeurtenissen verzenden

Bekijk de voorbeeld-app waarmee gegevens worden gegenereerd en verzonden naar een Event Hub.

Notitie

Om efficiënte verwerking van gebeurtenissen van Event Hubs naar Azure Data Explorer mogelijk te maken, vermijdt u een niet-verdeelde distributie van gebeurtenissen tussen partities. Ongelijke mapping kan leiden tot een hoge discovery latency. Zie Toewijzing van gebeurtenissen aan partitiesvoor meer informatie.

Oplossing voor geo-noodherstel instellen

Event Hub biedt een oplossing voor geo-noodherstel. Azure Data Explorer biedt geen ondersteuning voor Alias Event Hub-naamruimten. Als u het geo-noodherstel in uw oplossing wilt implementeren, maakt u twee Event Hub-gegevensverbindingen: een voor de primaire naamruimte en een 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.