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.
Verwenden Sie die folgende Abfrage:
select *, DeviceId, DeviceStatus from iotHubInput
Konfigurieren Sie
DeviceId,DeviceStatus
als Eigenschaftenspalten in der Ausgabe.
Die folgende Abbildung zeigt die erwarteten Eigenschaften der Ausgabemeldung, die in einem Event Hub mit Service Bus Explorer überprüft wurden.
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.