Dela via


Event Hubs-dataanslutning (förhandsversion)

Azure Event Hubs är en stordataströmningsplattform och händelseinmatningstjänst. Azure Synapse Data Explorer erbjuder kontinuerlig inmatning från kundhanterade eventhubbar.

Event Hubs-inmatningspipelinen överför händelser till Azure Synapse Data Explorer i flera steg. Först skapar du en händelsehubb i Azure Portal. Sedan skapar du en måltabell i Azure Synapse Data Explorer där data i ett visst format matas in med hjälp av de angivna inmatningsegenskaperna. Event Hubs-anslutningen måste känna till händelsedirigering. Data bäddas in med valda egenskaper enligt mappningen av händelsesystemegenskaper. Skapa en anslutning till Event Hubs för att skapa en händelsehubb och skicka händelser. Den här processen kan hanteras via Azure Portal, programmatiskt med C# eller Python eller med Azure Resource Manager-mallen.

Allmän information om datainmatning i Azure Synapse Data Explorer finns i Översikt över datainmatning i Azure Synapse Data Explorer.

Dataformat

  • Data läss från Event Hubs i form av EventData-objekt .

  • Se format som stöds.

    Kommentar

    Event Hub stöder inte .raw format.

  • Data kan komprimeras med hjälp av komprimeringsalgoritmen GZip . Ange Compression inmatningsegenskaper.

    • Datakomprimering stöds inte för komprimerade format (Avro, Parquet, ORC).
    • Anpassade kodnings- och inbäddade systemegenskaper stöds inte på komprimerade data.

Egenskaper för inmatning

Inmatningsegenskaper instruerar inmatningsprocessen, var data ska dirigeras och hur de ska bearbetas. Du kan ange inmatningsegenskaper för händelseinmatningen med hjälp av EventData.Properties. Du kan ange följande egenskaper:

Property beskrivning
Tabell Namn (skiftlägeskänsligt) för den befintliga måltabellen. Åsidosätter uppsättningen Table i fönstret Data Connection .
Format Dataformat. Åsidosätter uppsättningen Data format i fönstret Data Connection .
IngestionMappingReference Namnet på den befintliga inmatningsmappning som ska användas. Åsidosätter uppsättningen Column mapping i fönstret Data Connection .
Komprimering Datakomprimering, None (standard) eller GZip komprimering.
Encoding Datakodning, standardvärdet är UTF8. Kan vara någon av .NET-kodningar som stöds.
Taggar En lista över taggar som ska associeras med inmatade data, formaterad som en JSON-matrissträng. Det finns prestandakonsekvenser när du använder taggar.

Kommentar

Endast händelser som anges när du har skapat dataanslutningen matas in.

Händelseroutning

När du konfigurerar en Event Hubs-anslutning till Azure Synapse Data Explorer-kluster anger du måltabellegenskaper (tabellnamn, dataformat, komprimering och mappning). Standardroutningen för dina data kallas även .static routing Du kan också ange måltabellegenskaper för varje händelse med hjälp av händelseegenskaper. Anslutningen dirigerar dynamiskt data enligt vad som anges i EventData.Properties, vilket överskrider de statiska egenskaperna för den här händelsen.

I följande exempel anger du Event Hubs-information och skickar vädermåttdata till tabellen WeatherMetrics. Data är i json format. mapping1 är fördefinierad i tabellen WeatherMetrics.

Varning

I det här exemplet används anslutningssträng autentisering för att ansluta till Event Hubs för enkelhetens skull. Men hårdkodning av en anslutningssträng i skriptet kräver en mycket hög grad av förtroende för programmet och medför säkerhetsrisker.

För långsiktiga, säkra lösningar använder du något av följande alternativ:

var eventHubNamespaceConnectionString=<connection_string>;
var eventHubName=<event_hub>;

// Create the data
var metric = new Metric { Timestamp = DateTime.UtcNow, MetricName = "Temperature", Value = 32 }; 
var data = JsonConvert.SerializeObject(metric);

// Create the event and add optional "dynamic routing" properties
var eventData = new EventData(Encoding.UTF8.GetBytes(data));
eventData.Properties.Add("Table", "WeatherMetrics");
eventData.Properties.Add("Format", "json");
eventData.Properties.Add("IngestionMappingReference", "mapping1");
eventData.Properties.Add("Tags", "['mydatatag']");

// Send events
var eventHubClient = EventHubClient.CreateFromConnectionString(eventHubNamespaceConnectionString, eventHubName);
eventHubClient.Send(eventData);
eventHubClient.Close();

Mappning av händelsesystemegenskaper

Systemegenskaper lagrar egenskaper som anges av Event Hubs-tjänsten, vid den tidpunkt då händelsen sparas. Azure Synapse Data Explorer Event Hubs-anslutningen bäddar in de valda egenskaperna i datalandningen i tabellen.

Kommentar

  • Systemegenskaper stöds för json tabellformat (csvtsvosv.) och stöds inte för komprimerade data. När du använder ett format som inte stöds matas data fortfarande in, men egenskaperna ignoreras.
  • För tabelldata stöds systemegenskaper endast för händelsemeddelanden med en post.
  • För JSON-data stöds även systemegenskaper för händelsemeddelanden med flera poster. I sådana fall läggs systemegenskaperna bara till i den första posten i händelsemeddelandet.
  • För csv mappning läggs egenskaper till i början av posten i den ordning som anges i tabellen Systemegenskaper .
  • För json mappning läggs egenskaper till enligt egenskapsnamn i tabellen Systemegenskaper .

Systemegenskaper

Event Hubs visar följande systemegenskaper:

Property Datatyp beskrivning
x-opt-enqueued-time datetime UTC-tid när händelsen kördes
x-opt-sequence-number lång Det logiska sekvensnumret för händelsen i partitionsströmmen för Event Hubs
x-opt-offset sträng Förskjutningen av händelsen från Event Hubs-partitionsströmmen. Förskjutningsidentifieraren är unik inom en partition av Händelsehubbar-strömmen
x-opt-publisher sträng Utgivarens namn, om meddelandet skickades till en utgivarslutpunkt
x-opt-partition-key sträng Partitionsnyckeln för motsvarande partition som lagrade händelsen

Om du har valt Egenskaper för händelsesystem i avsnittet Datakälla i tabellen måste du inkludera egenskaperna i tabellschemat och mappningen.

Exempel på schemamappning

Exempel på tabellschemamappning

Om dina data innehåller tre kolumner (Timespan, Metric, och Value) och de egenskaper som du inkluderar är x-opt-enqueued-time och x-opt-offset, skapar eller ändrar du tabellschemat med hjälp av det här kommandot:

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

EXEMPEL på CSV-mappning

Kör följande kommandon för att lägga till data i början av posten. Anteckna ordningstalsvärden.

    .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"}}'
    ']'

JSON-mappningsexempel

Data läggs till med hjälp av mappningen av systemegenskaper. Kör dessa kommandon:

    .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"}}'
    ']'

Event Hubs-anslutning

Kommentar

För bästa prestanda skapar du alla resurser i samma region som Azure Synapse Data Explorer-klustret.

Skapa en händelsehubb

Om du inte redan har en skapar du en händelsehubb. Anslutning till Event Hubs kan hanteras via Azure Portal, programmatiskt med C# eller Python eller med Azure Resource Manager-mallen.

Kommentar

  • Partitionsantalet kan inte ändras, så du bör överväga långsiktig skalning när du anger antal partitioner.
  • Konsumentgruppen måste vara unik per konsument. Skapa en konsumentgrupp som är dedikerad till Azure Synapse Data Explorer-anslutning.

Skicka händelser

Se exempelappen som genererar data och skickar dem till en händelsehubb.

Ett exempel på hur du genererar exempeldata finns i Mata in data från Event Hubs till Azure Synapse Data Explorer

Konfigurera geo-haveriberedskapslösning

Event Hubs erbjuder en lösning för geo-haveriberedskap . Azure Synapse Data Explorer stöder Alias inte Event Hubs-namnområden. Om du vill implementera geo-haveriberedskapen i din lösning skapar du två Event Hubs-dataanslutningar: en för det primära namnområdet och en för det sekundära namnområdet. Azure Synapse Data Explorer lyssnar på båda Event Hubs-anslutningarna.

Kommentar

Det är användarens ansvar att implementera en redundansväxling från det primära namnområdet till det sekundära namnområdet.

Nästa steg