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
. AngeCompression
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:
- Lösenordsfri autentisering
- Lagra din anslutningssträng i ett Azure Key Vault och använd den här metoden för att hämta den i koden.
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 (csv
tsv
osv.) 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
- Mata in data från Event Hubs till Azure Synapse Data Explorer
- Skapa en Event Hubs-dataanslutning för Azure Synapse Data Explorer med C#
- Skapa en Event Hubs-dataanslutning för Azure Synapse Data Explorer med python
- Skapa en Event Hubs-dataanslutning för Azure Synapse Data Explorer med hjälp av Azure Resource Manager-mall