Event Hub-Datenverbindung (Vorschau)

Bei Azure Event Hubs handelt es sich um eine Big Data-Streamingplattform und einen Ereigniserfassungsdienst. Azure Synapse Daten-Explorer bietet eine kontinuierliche Erfassung von Daten aus kundenseitig verwalteten Event Hubs.

Die Event Hub-Erfassungspipeline überträgt Ereignisse in mehreren Schritten an den Azure Synapse Daten-Explorer. Zunächst erstellen Sie im Azure-Portal einen Event Hub. Anschließend erstellen Sie eine Zieltabelle im Azure Synapse Daten-Explorer, in der die Daten in einem bestimmten Format anhand der Erfassungseigenschaften erfasst werden. Die Event Hub-Verbindung muss über Informationen zum Ereignisrouting verfügen. Daten werden mit ausgewählten Eigenschaften gemäß der Eigenschaftenzuordnung des Ereignissystems eingebettet. Erstellen Sie eine Verbindung mit Event Hub, um eine Event Hub-Instanz zu erstellen und Ereignisse zu senden. Dieser Prozess kann über das Azure-Portal, programmgesteuert mit C# oder Python oder mit der Azure Resource Manager-Vorlage verwaltet werden.

Allgemeine Informationen zur Datenerfassung im Azure Synapse Daten-Explorer finden Sie unter Übersicht über die Datenerfassung in Azure Daten-Explorer.

Datenformat

  • Daten werden in Form von EventData-Objekten aus dem Event Hub gelesen.

  • Siehe Unterstützte Formate.

    Hinweis

    Das RAW-Format wird von Event Hub nicht unterstützt.

  • Daten können mit dem GZip-Komprimierungsalgorithmus komprimiert werden. Geben Sie Compression in den Erfassungseigenschaften an.

    • Für komprimierte Formate (Avro, Parquet, ORC) wird die Datenkomprimierung nicht unterstützt.
    • Eine benutzerdefinierte Codierung und eingebettete Systemeigenschaften werden für komprimierte Daten nicht unterstützt.

Erfassungseigenschaften

Erfassungseigenschaften weisen den Erfassungsprozess an, wohin die Daten weitergeleitet und wie sie verarbeitet werden sollen. Sie können Erfassungseigenschaften der Ereigniserfassung mithilfe von EventData.Properties angeben. Sie können die folgenden Eigenschaften festlegen:

Eigenschaft Beschreibung
Tabelle Name (unter Berücksichtigung der Groß/Kleinschreibung) der vorhandenen Zieltabelle. Überschreibt das Table-Element, das im Bereich Data Connection festgelegt ist.
Format Datenformat. Überschreibt das Data format-Element, das im Bereich Data Connection festgelegt ist.
IngestionMappingReference Name der zu verwendenden vorhandenen Erfassungszuordnung. Überschreibt das Column mapping-Element, das im Bereich Data Connection festgelegt ist.
Komprimierung Datenkomprimierung. None (Standardeinstellung) oder GZip-Komprimierung.
Codierung Datencodierung. Die Standardeinstellung ist UTF8. Alle von .NET unterstützten Codierungen können verwendet werden.
Tags Eine Liste der Tags, die den erfassten Daten zugeordnet werden sollen (formatiert als JSON-Arrayzeichenfolge). Die Verwendung von Tags hat Auswirkungen auf die Leistung.

Hinweis

Nur Ereignisse, die nach dem Erstellen der Datenverbindung in die Warteschlange eingereiht werden, werden erfasst.

Ereignisrouting

Beim Einrichten einer Event Hub-Verbindung mit einem Azure Synapse Daten-Explorer-Cluster geben Sie die Zieltabelleneigenschaften an (Tabellenname, Datenformat, Komprimierung und Zuordnung). Das Standardrouting für Ihre Daten wird auch als static routing bezeichnet. Sie können mithilfe von Ereigniseigenschaften auch Zieltabelleneigenschaften für jedes Ereignis angeben. Die Verbindung leitet die Daten wie in EventData.Properties festgelegt dynamisch weiter und setzt dabei die statischen Eigenschaften für dieses Ereignis außer Kraft.

Im folgenden Beispiel werden Event Hub-Details festgelegt und Metrikdaten zum Wetter an die Tabelle WeatherMetrics gesendet. Die Daten liegen im json-Format vor. mapping1 ist für die Tabelle WeatherMetrics vordefiniert.

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();

Zuordnung von Ereignissystemeigenschaften

Systemeigenschaften speichern vom Event Hubs-Dienst festgelegte Eigenschaften, wenn das Ereignis in die Warteschlange eingereiht wird. Die Event Hub-Verbindung mit dem Azure Synapse Daten-Explorer bettet die ausgewählten Eigenschaften in die Daten ein, die in Ihre Tabelle gelangen.

Hinweis

  • Systemeigenschaften werden für json und Tabellenformate (csv, tsv usw.), aber nicht für komprimierte Daten unterstützt. Bei Verwendung eines nicht unterstützten Formats werden die Daten weiterhin erfasst, die Eigenschaften werden jedoch ignoriert.
  • Bei Tabellendaten werden Systemeigenschaften nur für Ereignismeldungen mit einem Datensatz unterstützt.
  • Bei JSON-Daten werden Systemeigenschaften auch für Ereignismeldungen mit mehreren Datensätzen unterstützt. In solchen Fällen werden die Systemeigenschaften nur dem ersten Datensatz der Ereignismeldung hinzugefügt.
  • Für die csv-Zuordnung werden Eigenschaften in der in der Tabelle csv aufgeführten Reihenfolge am Anfang des Datensatzes hinzugefügt.
  • Für die json-Zuordnung werden Eigenschaften entsprechend den Eigenschaftsnamen in der Tabelle Systemeigenschaften hinzugefügt.

Systemeigenschaften

Event Hub macht die folgenden Systemeigenschaften verfügbar:

Eigenschaft Datentyp Beschreibung
x-opt-enqueued-time datetime UTC-Zeit, zu der das Ereignis in die Warteschlange eingereiht wurde.
x-opt-sequence-number long Die logische Folgenummer des Ereignisses innerhalb des Partitionsdatenstroms des Event Hubs.
x-opt-offset Zeichenfolge Der Offset des Ereignisses vom Event Hub-Partitionsdatenstrom. Der Offsetbezeichner ist innerhalb einer Partition des Event Hub-Datenstroms eindeutig.
x-opt-publisher Zeichenfolge Der Name des Herausgebers, wenn die Nachricht an einen Herausgeberendpunkt gesendet wurde.
x-opt-partition-key Zeichenfolge Der Partitionsschlüssel der entsprechenden Partition, in der das Ereignis gespeichert wurde.

Wenn Sie Ereignissystemeigenschaften im Abschnitt Datenquelle der Tabelle ausgewählt haben, müssen Sie die Eigenschaften in das Tabellenschema und die Zuordnung einschließen.

Beispiele für die Schemazuordnung

Beispiel für die Tabellenschemazuordnung

Wenn Ihre Daten drei Spalten (Timespan, Metric und Value) enthalten und die Eigenschaften, die Sie einschließen, x-opt-enqueued-time und x-opt-offset lauten, erstellen oder ändern Sie das Tabellenschema mit dem folgenden Befehl:

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

Beispiel für eine CSV-Zuordnung

Führen Sie die folgenden Befehle aus, um am Anfang des Datensatzes Daten hinzuzufügen. Beachten Sie die Ordinalwerte.

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

Beispiel für eine JSON-Zuordnung

Daten werden mithilfe der Systemeigenschaftenzuordnung hinzugefügt. Führen Sie diese Befehle aus:

    .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-Verbindung

Hinweis

Die beste Leistung erzielen Sie, wenn Sie alle Ressourcen in der gleichen Region wie den Azure Synapse Daten-Explorer-Cluster erstellen.

Erstellen eines Event Hubs

Erstellen Sie einen Event Hub, sofern Sie noch keinen haben. Die Verbindungsherstellung mit Event Hub kann über das Azure-Portal, programmgesteuert mit C# oder Python oder mit der Azure Resource Manager-Vorlage verwaltet werden.

Hinweis

  • Die Partitionenanzahl kann nicht geändert werden. Behalten Sie daher beim Festlegen der Partitionenanzahl die langfristige Skalierung im Hinterkopf.
  • Die Consumergruppe muss pro Consumer eindeutig sein. Erstellen Sie eine dedizierte Verbrauchergruppe für die Azure Synapse Daten-Explorer-Verbindung.

Senden von Ereignissen

Sehen Sie sich die Beispiel-App an, die Daten generiert und an einen Event Hub sendet.

Ein Beispiel zum Generieren von Beispieldaten finden Sie unter Erfassen von Daten aus Event Hub in Azure Synapse Daten-Explorer

Einrichten einer Lösung für die georedundante Notfallwiederherstellung

Event Hub bietet eine Lösung für die georedundante Notfallwiederherstellung. Der Azure Synapse Daten-Explorer unterstützt keine Event Hub-Namespaces vom Typ Alias. Erstellen Sie zum Implementieren der georedundanten Notfallwiederherstellung in Ihrer Lösung zwei Event Hub-Datenverbindungen: eine für den primären Namespace und eine für den sekundären Namespace. Der Azure Synapse Daten-Explorer beobachtet beide Event Hub-Verbindungen.

Hinweis

Es liegt in der Verantwortung des Benutzers, ein Failover vom primären Namespace auf den sekundären Namespace zu implementieren.

Nächste Schritte