Event Hub-gegevensverbinding (preview)
Azure Event Hubs is een platform voor het streamen van big data en een service voor gebeurtenisopname. Azure Synapse Data Explorer biedt continue opname van door de klant beheerde Event Hubs.
De Opnamepijplijn van Event Hub draagt in verschillende stappen gebeurtenissen over naar Azure Synapse Data Explorer. U maakt eerst een Event Hub in de Azure Portal. Vervolgens maakt u een doeltabel in Azure Synapse Data Explorer waarin de gegevens in een bepaalde indeling worden opgenomen met behulp van de opgegeven opname-eigenschappen. De Event Hub-verbinding moet de routering van gebeurtenissen kennen. Gegevens worden ingesloten met geselecteerde eigenschappen volgens de toewijzing van de gebeurtenissysteemeigenschappen. Maak een verbinding met Event Hub 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 Azure Synapse Data Explorer gegevensopname voor algemene informatie over gegevensopname in Azure Synapse Data Explorer.
Gegevensindeling
Gegevens worden gelezen uit de Event Hub in de vorm van EventData-objecten .
-
Notitie
Event Hub biedt geen ondersteuning voor de RAW-indeling.
Gegevens kunnen worden gecomprimeerd met behulp van het
GZip
compressie-algoritme. GeefCompression
eigenschappen voor opname op.- Gegevenscompressie wordt niet ondersteund voor gecomprimeerde indelingen (Avro, Parquet, ORC).
- Aangepaste codering en ingesloten systeemeigenschappen worden niet ondersteund voor gecomprimeerde gegevens.
Opname-eigenschappen
Opname-eigenschappen geven instructies voor het opnameproces, waar de gegevens moeten worden gerouteerd en hoe deze moeten worden verwerkt. U kunt opname-eigenschappen van de gebeurtenisopname opgeven met behulp van EventData.Properties. U kunt de volgende eigenschappen instellen:
Eigenschap | Beschrijving |
---|---|
Tabel | Naam (hoofdlettergevoelig) van de bestaande doeltabel. Hiermee overschrijft u de Table set in het Data Connection deelvenster. |
Indeling | Gegevensindeling. Hiermee overschrijft u de Data format set in het Data Connection deelvenster. |
IngestionMappingReference | Naam van de bestaande opnametoewijzing die moet worden gebruikt. Hiermee overschrijft u 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. |
Notitie
Alleen gebeurtenissen die worden opgehaald nadat u de gegevensverbinding hebt gemaakt, worden opgenomen.
Routering van gebeurtenissen
Wanneer u een Event Hub-verbinding met Azure Synapse Data Explorer cluster instelt, geeft u eigenschappen van de doeltabel op (tabelnaam, gegevensindeling, compressie en toewijzing). De standaardroutering voor uw gegevens wordt ook wel aangeduid als static routing
.
U kunt ook eigenschappen van de doeltabel voor elke gebeurtenis opgeven met behulp van gebeurteniseigenschappen. Met de verbinding worden de gegevens dynamisch gerouteerd zoals opgegeven in EventData.Properties, waarbij de statische eigenschappen voor deze gebeurtenis worden overschreven.
In het volgende voorbeeld stelt u Event Hub-details in en verzendt u metrische gegevens over het weer naar de tabel WeatherMetrics
.
Gegevens hebben json
de indeling.
mapping1
is vooraf gedefinieerd in de tabel WeatherMetrics
.
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();
Toewijzing van gebeurtenissysteemeigenschappen
Systeemeigenschappen slaan eigenschappen op die zijn ingesteld door de Event Hubs-service, op het moment dat de gebeurtenis wordt onderbroken. Met de Azure Synapse Data Explorer Event Hub-verbinding worden de geselecteerde eigenschappen ingesloten in de gegevenslanding in uw tabel.
Notitie
- Systeemeigenschappen worden ondersteund voor
json
tabellaire indelingen (csv
enzovoorttsv
) en worden niet ondersteund voor gecomprimeerde gegevens. Wanneer u een niet-ondersteunde indeling gebruikt, worden de gegevens nog steeds opgenomen, maar worden de eigenschappen genegeerd. - Voor gegevens in tabelvorm 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 in de tabel Systeemeigenschappen . - Voor
json
toewijzing worden eigenschappen toegevoegd op basis van eigenschapsnamen in de tabel Systeemeigenschappen .
Systeemeigenschappen
Event Hub maakt de volgende systeemeigenschappen beschikbaar:
Eigenschap | Gegevenstype | Beschrijving |
---|---|---|
x-opt-enqueued-time | datum/tijd | UTC-tijd waarop de gebeurtenis is ge-enqueued |
x-opt-sequence-number | long | Het logische volgnummer van de gebeurtenis in de partitiestroom van de Event Hub |
x-opt-offset | tekenreeks | De offset van de gebeurtenis van de Event Hub-partitiestroom. De offset-id is uniek binnen een partitie van de Event Hub-stream |
x-opt-publisher | tekenreeks | De naam van de uitgever, als het bericht is verzonden naar een uitgeverseindpunt |
x-opt-partition-key | tekenreeks | De partitiesleutel van de bijbehorende partitie die de gebeurtenis heeft opgeslagen |
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. Noteer rangtelwaarden.
.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"}}'
']'
Event Hub-verbinding
Notitie
Voor de beste prestaties maakt u alle resources in dezelfde regio als het Azure Synapse Data Explorer-cluster.
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
- Het aantal partities kan niet worden gewijzigd, dus u moet rekening houden met langetermijnschaal bij het instellen van het aantal partities.
- De consumentengroep moet uniek zijn per consument. Maak een consumentengroep die is toegewezen aan Azure Synapse 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 Synapse Data Explorer voor een voorbeeld van het genereren van voorbeeldgegevens
Oplossing voor herstel na een geo-noodgeval instellen
Event Hub biedt een oplossing voor herstel na een geo-noodgeval .
Azure Synapse Data Explorer biedt geen ondersteuning voor Alias
Event Hub-naamruimten. Als u herstel na een 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 Synapse 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.
Volgende stappen
- Gegevens van Event Hub opnemen in Azure Synapse Data Explorer
- Een Event Hub-gegevensverbinding maken voor Azure Synapse Data Explorer met behulp van C #
- Een Event Hub-gegevensverbinding maken voor Azure Synapse Data Explorer met behulp van Python
- Een Event Hub-gegevensverbinding maken voor Azure Synapse Data Explorer met behulp van azure Resource Manager-sjabloon