Event Hubs-gegevensverbinding (preview)
Azure Event Hubs is een streamingplatform voor big data en een service voor gebeurtenisopname. Azure Synapse Data Explorer biedt continue opname van door de klant beheerde Event Hubs.
De Event Hubs-opnamepijplijn draagt in verschillende stappen gebeurtenissen over naar Azure Synapse Data Explorer. U maakt eerst een Event Hubs in 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 Hubs-verbinding moet weten wat de routering van gebeurtenissen is. Gegevens worden ingesloten met geselecteerde eigenschappen volgens de toewijzing van de eigenschappen van het gebeurtenissysteem. Maak een verbinding met Event Hubs om een Event Hubs te maken en gebeurtenissen te verzenden. Dit proces kan worden beheerd via Azure Portal, programmatisch met C# of Python, of met de Azure Resource Manager-sjabloon.
Zie het overzicht van gegevensopname in Azure Synapse Data Explorer voor algemene informatie over gegevensopname in Azure Synapse Data Explorer.
Gegevensopmaak
Gegevens worden gelezen uit de Event Hubs in de vorm van EventData-objecten .
Bekijk ondersteunde indelingen.
Notitie
Event Hub biedt geen ondersteuning voor de .raw-indeling.
Gegevens kunnen worden gecomprimeerd met behulp van het
GZip
compressie-algoritme. GeefCompression
opname-eigenschappen op.- Gegevenscompressie wordt niet ondersteund voor gecomprimeerde indelingen (Avro, Parquet, ORC).
- Aangepaste coderings- en ingesloten systeemeigenschappen worden niet ondersteund voor gecomprimeerde gegevens.
Opname-eigenschappen
Opname-eigenschappen geven het opnameproces de instructie, waar de gegevens 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:
Eigenschappen | Beschrijving |
---|---|
Tabel | Naam (hoofdlettergevoelig) van de bestaande doeltabel. Hiermee wordt de Table set in het Data Connection deelvenster overschreven. |
Notatie | Gegevensindeling. Hiermee wordt de Data format set in het Data Connection deelvenster overschreven. |
IngestionMappingReference | Naam van de bestaande opnametoewijzing die moet worden gebruikt. Hiermee wordt de Column mapping set in het Data Connection deelvenster overschreven. |
Compressie | Gegevenscompressie, None (standaard) of GZip compressie. |
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. |
Notitie
Alleen gebeurtenissen die worden verzameld nadat u de gegevensverbinding hebt gemaakt, worden opgenomen.
Routering van gebeurtenissen
Wanneer u een Event Hubs-verbinding met een Azure Synapse Data Explorer-cluster instelt, geeft u de 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, waardoor de statische eigenschappen voor deze gebeurtenis worden overschreven.
Stel in het volgende voorbeeld Event Hubs-gegevens in en verzend metrische gegevens over het weer naar een tabel WeatherMetrics
.
Gegevens hebben een json
indeling. mapping1
is vooraf gedefinieerd in de tabel WeatherMetrics
.
Waarschuwing
In dit voorbeeld wordt verbindingsreeks verificatie gebruikt om verbinding te maken met Event Hubs voor het gemak van het voorbeeld. Het coderen van een verbindingsreeks in uw script vereist echter een zeer hoge mate van vertrouwen in de toepassing en brengt beveiligingsrisico's met zich mee.
Gebruik een van de volgende opties voor langetermijnoplossingen:
- Verificatie zonder wachtwoord
- Sla uw verbindingsreeks op in een Azure Key Vault en gebruik deze methode om deze op te halen in uw code.
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 Event Hubs-verbinding van Azure Synapse Data Explorer worden de geselecteerde eigenschappen ingesloten in de gegevenslanding in uw tabel.
Notitie
- Systeemeigenschappen worden ondersteund voor
json
en tabellaire indelingen (tsv
csv
enzovoort) 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 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 in de tabel Systeemeigenschappen . - Voor
json
toewijzing worden eigenschappen toegevoegd op basis van eigenschapsnamen in de tabel Systeemeigenschappen .
Systeemeigenschappen
Event Hubs maakt de volgende systeemeigenschappen beschikbaar:
Eigenschappen | Gegevenssoort | Beschrijving |
---|---|---|
x-opt-enqueued-time | datetime | UTC-tijd waarop de gebeurtenis is geïnventueerd |
x-opt-sequence-number | long | Het logische volgnummer van de gebeurtenis binnen de partitiestroom van de Event Hubs |
x-opt-offset | tekenreeks | De verschuiving van de gebeurtenis van de Event Hubs-partitiestroom. De offset-id is uniek binnen een partitie van de Event Hubs-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 eigenschappen van gebeurtenissysteem hebt geselecteerd in de sectie Gegevensbron van de tabel, moet u de eigenschappen in het tabelschema en de toewijzing opnemen.
Voorbeelden van schematoewijzing
Voorbeeld van tabelschematoewijzing
Als uw gegevens drie kolommen (Timespan
, en ) Value
en de eigenschappen die u opneemt, zijn x-opt-enqueued-time
enx-opt-offset
, maakt of wijzigt u het tabelschema met behulp Metric
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. Let op 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 systeemeigenschappentoewijzing. 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 Hubs-verbinding
Notitie
Maak voor de beste prestaties alle resources in dezelfde regio als het Azure Synapse Data Explorer-cluster.
Een Event Hubs maken
Als u er nog geen hebt, maakt u een Event Hubs. Verbinding maken met Event Hubs kan worden beheerd via Azure Portal, programmatisch met C# of Python of met de Azure Resource Manager-sjabloon.
Notitie
- Het aantal partities kan niet worden gewijzigd. Overweeg daarom de schaal op lange termijn bij het instellen van het aantal partities.
- Consumentengroep moet uniek zijn per consument. Maak een consumentengroep die is toegewezen aan de Verbinding met Azure Synapse Data Explorer.
Gebeurtenissen verzenden
Bekijk de voorbeeld-app waarmee gegevens worden gegenereerd en verzonden naar een Event Hubs.
Zie Gegevens van Event Hubs opnemen in Azure Synapse Data Explorer voor een voorbeeld van het genereren van voorbeeldgegevens
Oplossing voor geo-noodherstel instellen
Event Hubs biedt een oplossing voor geo-noodherstel .
Azure Synapse Data Explorer biedt geen ondersteuning voor Alias
Event Hubs-naamruimten. Als u het herstel na noodgevallen in uw oplossing wilt implementeren, maakt u twee Event Hubs-gegevensverbindingen: een voor de primaire naamruimte en een voor de secundaire naamruimte. Azure Synapse Data Explorer luistert naar beide Event Hubs-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 Hubs opnemen in Azure Synapse Data Explorer
- Een Event Hubs-gegevensverbinding maken voor Azure Synapse Data Explorer met behulp van C#
- Een Event Hubs-gegevensverbinding maken voor Azure Synapse Data Explorer met behulp van Python
- Een Event Hubs-gegevensverbinding maken voor Azure Synapse Data Explorer met behulp van een Azure Resource Manager-sjabloon