Event Hubs-Ausgabe für Azure Stream Analytics

Der Dienst Azure Event Hubs ist ein hoch skalierbarer Veröffentlichen-Abonnieren-Ereignisingestor. Er kann mehrere Millionen Ereignisse pro Sekunde erfassen. Eine Verwendungsmöglichkeit eines Event Hubs als Ausgabe ergibt sich, wenn die Ausgabe eines Stream Analytics-Auftrags zur Eingabe eines anderen Streamingauftrags wird. Weitere Informationen zum Optimieren der maximalen Nachrichtengröße und Batchgröße finden Sie im Abschnitt zur Ausgabebatchgröße.

Ausgabekonfiguration

Die folgende Tabelle enthält die Parameter, die zur Konfiguration von Datenströmen von Event Hubs als Ausgabe erforderlich sind.

Eigenschaftenname BESCHREIBUNG
Ausgabealias Ein Anzeigename, der in Abfragen verwendet wird, um die Abfrageausgabe an diesen Event Hub weiterzuleiten.
Event Hub-Namespace Ein Container für einen Satz von Nachrichtenentitäten. Sie haben bei der Erstellung eines neuen Event Hubs auch einen Event Hub-Namespace erstellt.
Event Hub-Name Der Name Ihrer Event Hub-Ausgabe.
Event Hub-Richtlinienname Die Richtlinie für den gemeinsamen Zugriff, die Sie auf der Registerkarte Konfigurieren des Event Hubs erstellen können. Jede SAS-Richtlinie umfasst einen Namen, die von Ihnen festgelegten Berechtigungen und Zugriffsschlüssel.
Event Hub-Richtlinienschlüssel Der Schlüssel für den gemeinsamen Zugriff, der für die Authentifizierung des Zugriffs auf den Event Hub-Namespace verwendet wird.
Partitionsschlüsselspalte Optional. Eine Spalte, die den Partitionsschlüssel für die Event Hub-Ausgabe enthält.
Ereignisserialisierungsformat Das Serialisierungsformat für Ausgabedaten. Es werden JSON, CSV und Avro unterstützt.
Codieren Bei CSV und JSON ist UTF-8 gegenwärtig das einzige unterstützte Codierungsformat.
Trennzeichen Gilt nur für die CSV-Serialisierung. Stream Analytics unterstützt eine Reihe von üblichen Trennzeichen zum Serialisieren der Daten im CSV-Format. Unterstützte Werte sind Komma, Semikolon, Leerzeichen, Tabstopp und senkrechter Strich.
Format Gilt nur für die JSON-Serialisierung. Separate Zeile gibt an, dass die Ausgabe so formatiert wird, dass jedes JSON-Objekt in einer neuen Zeile enthalten ist. Wenn Sie Separate Zeile auswählen, wird der JSON-Code objektweise gelesen. Der gesamte Inhalt an sich wäre kein gültiger JSON-Code. Array gibt an, dass die Ausgabe als Array aus JSON-Objekten formatiert wird.
Eigenschaftenspalten Optional. Durch Komma getrennte Spalten, die anstelle der Nutzlast als Benutzereigenschaften der ausgehenden Nachricht angefügt werden müssen. Weitere Informationen zu diesem Feature finden Sie im Abschnitt Benutzerdefinierte Metadateneigenschaften für die Ausgabe.

Partitionierung

Die Partitionierung variiert je nach Partitionsausrichtung. Wenn der Partitionsschlüssel für die Event Hub-Ausgabe gleichmäßig mit dem (vorherigen) Upstream-Abfrageschritt ausgerichtet ist, entspricht die Anzahl der Writer der Anzahl der Partitionen in der Event Hub-Ausgabe. Jeder Writer verwendet die EventHubSender-Klasse, um Ereignisse an die jeweilige Partition zu senden. Wenn der Partitionsschlüssel für die Event Hub-Ausgabe nicht mit dem (vorherigen) Upstream-Abfrageschritt ausgerichtet ist, entspricht die Anzahl der Writer der Anzahl der Partitionen in diesem vorherigen Schritt. Jeder Writer verwendet die SendBatchAsync-Klasse in EventHubClient, um Ereignisse an alle Ausgabepartitionen zu senden.

Ausgabebatchgröße

Die maximale Nachrichtengröße beträgt 256 KB oder 1 MB pro Nachricht. Weitere Informationen finden Sie unter Event Hubs-Grenzwerte. Wenn die E/A-Partitionierung nicht ausgerichtet ist, wird jedes Ereignis einzeln in EventData verpackt und als Batch gesendet, dessen Größe bis zur maximalen Nachrichtengröße reichen kann. Dies geschieht auch, wenn benutzerdefinierte Metadateneigenschaften verwendet werden. Wenn die E/A-Partitionierung ausgerichtet ist, werden mehrere Ereignisse bis zur maximalen Nachrichtengröße in eine einzelne EventData-Instanz verpackt und gesendet.

Benutzerdefinierte Metadateneigenschaften für die Ausgabe

Sie können Abfragespalten als Benutzereigenschaften an Ihre ausgehenden Nachrichten anfügen. Diese Spalten gelangen nicht in die Nutzlast. Die Eigenschaften liegen in Form eines Wörterbuchs für die Ausgabemeldung vor. Schlüssel ist der Spaltenname und der Wert ist der Spaltenwert im Eigenschaftenwörterbuch. Alle Stream Analytics-Datentypen werden mit Ausnahme von „Datensatz“ und „Array“ unterstützt.

Im folgenden Beispiel werden die Felder DeviceId und DeviceStatus zu den Metadaten hinzugefügt.

  1. Verwenden Sie die folgende Abfrage:

    select *, DeviceId, DeviceStatus from iotHubInput
    
  2. Konfigurieren Sie DeviceId,DeviceStatus als Eigenschaftenspalten in der Ausgabe.

    Eigenschaftenspalten

Die folgende Abbildung zeigt die erwarteten Eigenschaften der Ausgabemeldung, die in einem Event Hub mit Service Bus Explorer überprüft wurden.

Benutzerdefinierte Ereigniseigenschaften

Zustellung vom Typ „Genau einmal“ (Exactly Once)

In der Event Hub-Ausgabe wird standardmäßig die Zustellung vom Typ „Genau einmal“ (Exactly Once) unterstützt. Unabhängig von Ihrer Eingabe garantiert Stream Analytics, dass keine Daten verloren gehen oder Duplikate in der Event Hub-Ausgabe bei von Benutzer*innen initiierten Neustarts ab dem letzten Ausgabezeitpunkt erstellt werden. Dies vereinfacht die Streamingpipeline erheblich, da Sie keine Deduplizierungslogik überwachen und implementieren oder Probleme in diesem Zusammenhang behandeln müssen.

Nächste Schritte