Ausgaben von Azure Stream Analytics
Ein Azure Stream Analytics-Auftrag besteht aus einer Eingabe, Abfrage und Ausgabe. Transformierte Daten können an verschiedene Ausgabetypen gesendet werden. In diesem Artikel werden die unterstützten Stream Analytics-Ausgaben aufgeführt. Verweisen Sie beim Entwerfen Ihrer Stream Analytics-Abfrage auf den Namen der Ausgabe, indem Sie die INTO-Klausel verwenden. Sie können eine einzelne Ausgabe pro Auftrag oder (bei Bedarf) auch mehrere Ausgaben pro Streamingauftrag verwenden, indem Sie der Abfrage mehrere INTO-Klauseln hinzufügen.
Zum Erstellen, Bearbeiten und Testen von Stream Analytics-Auftragsausgaben können Sie das Azure-Portal, Azure PowerShell, die .NET-API, die REST-API, Visual Studio und Visual Studio Code verwenden.
Hinweis
Es wird dringend empfohlen, dass Sie Stream Analytics-Tools für Visual Studio Code verwenden, um die optimale lokale Entwicklungserfahrung zu gewährleisten. Es gibt bekannte Funktionslücken in Stream Analytics-Tools für Visual Studio 2019 (Version 2.6.3000.0), und die Version wird in Zukunft nicht verbessert.
Einige Ausgabetypen unterstützen Partitionierung wie in der folgenden Tabelle dargestellt.
Alle Ausgaben unterstützen die Batchverarbeitung, aber nur einige unterstützen die explizite Angabe von Batchgrößen für Ausgaben. Weitere Informationen finden Sie im Bereich Batchgrößen für Ausgaben.
Ausgabetyp | Partitionierung | Sicherheit |
---|---|---|
Azure Data Explorer | Ja | Verwaltete Identität |
Azure-Funktionen | Ja | Zugriffsschüssel |
Azure Synapse Analytics | Ja | SQL-Benutzerauthentifizierung, Verwaltete Identität |
Blob Storage und Azure Data Lake Gen 2 | Ja | Zugriffsschlüssel, Verwaltete Identität |
Azure Cosmos DB | Ja | Zugriffsschlüssel, Verwaltete Identität |
Azure Data Lake Storage Gen2 | Ja | Microsoft Entra-Benutzer*in verwaltete Identität |
Azure Event Hubs | Ja, Sie müssen die Partitionsschlüsselspalte in der Ausgabekonfiguration festlegen. | Zugriffsschlüssel, Verwaltete Identität |
Kafka (Vorschau) | Ja, Sie müssen die Partitionsschlüsselspalte in der Ausgabekonfiguration festlegen. | Zugriffsschlüssel, Verwaltete Identität |
Azure-Datenbank für PostgreSQL | Ja | Authentifizierung mit Benutzername und Kennwort |
Power BI | Nein | Microsoft Entra-Benutzer*in , verwaltete Identität |
Azure Service Bus-Warteschlangen | Ja | Zugriffsschlüssel, Verwaltete Identität |
Azure Service Bus-Themen | Ja | Zugriffsschlüssel, Verwaltete Identität |
Azure SQL-Datenbank | Ja, optional | SQL-Benutzerauthentifizierung, Verwaltete Identität |
Azure Table Storage | Ja | Kontoschlüssel |
Wichtig
Azure Stream Analytics verwendet standardmäßig die API zum Einfügen oder Ersetzen. Mit diesem Vorgang wird eine vorhandene Entität ersetzt oder eine neue Entität eingefügt, wenn sie nicht in der Tabelle vorhanden ist.
Partitionierung
Stream Analytics unterstützt Partitionen für alle Ausgaben außer für Power BI. Weitere Informationen zu Partitionsschlüsseln und der Anzahl von Ausgabeschreibern finden Sie im Artikel zum jeweiligen Ausgabetyp. Im oberen Abschnitt finden Sie Links zu den Artikeln für die verschiedenen Ausgabetypen.
Wenn Sie die Partitionen zusätzlich weiter optimieren möchten, können Sie die Anzahl von Ausgabeschreibern mithilfe einer INTO <partition count>
-Klausel (siehe INTO) in Ihrer Abfrage steuern. Dies kann hilfreich sein, um die gewünschte Auftragstopologie zu erzielen. Wenn der Ausgabeadapter nicht partitioniert ist, führt das Fehlen von Daten in einer Eingabepartition zu einer Verzögerung. Diese kann die gesamte Zeitspanne der Eingangsverzögerung umfassen. In solchen Fällen wird die Ausgabe in einen einzigen Writer zusammengeführt, was Engpässe in Ihrer Pipeline verursachen kann. Weitere Informationen zur Richtlinie bei Eingangsverzögerung finden Sie unter Überlegungen zur Ereignisreihenfolge in Azure Stream Analytics.
Ausgabebatchgröße
Alle Ausgaben unterstützen die Batchverarbeitung, aber nur einige unterstützen die explizite Angabe von Batchgrößen. Für Azure Stream Analytics werden Batches mit variabler Größe verwendet, um Ereignisse zu verarbeiten und in Ausgaben zu schreiben. Normalerweise schreibt das Stream Analytics-Modul nicht nur jeweils eine Nachricht, sondern Batches, um die Effizienz zu steigern. Wenn die Rate der eingehenden und ausgehenden Ereignisse hoch ist, verwendet Stream Analytics größere Batches. Falls die Ausgangsrate niedrig ist, werden kleinere Batches genutzt, um die Latenz gering zu halten.
Aufteilungsverhalten für Avro- und Parquet-Dateien
Eine Stream Analytics-Abfrage kann mehrere Schemas für eine bestimmte Ausgabe generieren. Die Liste der projizierten Spalten und ihr Typ können sich zeilenweise ändern. Das Avro-Format und das Parquet-Format unterstützen standardmäßig keine variablen Schemata in einer einzelnen Datei.
Das folgende Verhalten kann möglicherweise auftreten, wenn ein Stream mit variablen Schemata mit den folgenden Formaten an eine Ausgabe weitergeleitet wird:
- Wenn die Schemaänderung erkannt werden kann, wird die aktuelle Ausgabedatei geschlossen und eine neue für das neue Schema initialisiert. Eine solche Aufteilung von Dateien verlangsamt die Ausgabe erheblich, wenn es häufig zu Schemaänderungen kommt. Dieses Verhalten kann sich stark auf die Gesamtleistung des Auftrags auswirken.
- Wenn die Schemaänderung nicht erkannt werden kann, wird die Zeile wahrscheinlich abgelehnt, und der Auftrag bleibt hängen, da die Zeile nicht ausgegeben werden kann. Geschachtelte Spalten oder Arrays mit mehreren Typen werden nicht erkannt und abgelehnt.
Wir empfehlen dringend, dass Sie Ausgaben, die das Avro- oder Parquet-Format nutzen, als stark typisiert (oder Schema-on-Write) betrachten und darauf ausgerichtete Abfragen dementsprechend schreiben (explizite Konvertierungen und Projektionen für ein einheitliches Schema).
Wenn mehrere Schemas generiert werden müssen, erstellen Sie mithilfe einer WHERE
-Klausel ggf. mehrere Ausgaben, und teilen Sie Datensätze in die einzelnen Ziele auf.
Eigenschaften des Zeitfensters der Batchverarbeitung für Parquet-Ausgaben
Bei Bereitstellungen über Azure Resource Manager-Vorlagen oder die REST-API stehen zwei Eigenschaften für das Zeitfenster der Batchverarbeitung zur Verfügung:
timeWindow
Die maximale Wartezeit pro Batch. Dieser Wert sollte eine Zeichenfolge für die
Timespan
sein. Beispiel:00:02:00
für zwei Minuten. Nach Ablauf dieser Zeit wird der Batch auch dann in die Ausgabe geschrieben, wenn die Anforderung an die Mindestanzahl von Zeilen nicht erfüllt ist. Der Standardwert beträgt 1 Minute, der zulässige Höchstwert 2 Stunden. Wenn Ihre Blobausgabe eine Pfadmusterhäufigkeit aufweist, kann die Wartezeit nicht über dem Partitionszeitbereich liegen.sizeWindow
Die minimale Zeilenanzahl pro Batch. Für Parquet erstellt jeder Batch eine neue Datei. Der aktuelle Standardwert beträgt 2.000 Zeilen und der zulässige Höchstwert 10.000 Zeilen.
Diese Eigenschaften des Zeitfensters der Batchverarbeitung werden nur von der API-Version 2017-04-01-preview oder höher unterstützt. Hier finden Sie ein Beispiel für die JSON-Nutzdaten für einen REST-API-Aufruf:
"type": "stream",
"serialization": {
"type": "Parquet",
"properties": {}
},
"timeWindow": "00:02:00",
"sizeWindow": "2000",
"datasource": {
"type": "Microsoft.Storage/Blob",
"properties": {
"storageAccounts" : [
{
"accountName": "{accountName}",
"accountKey": "{accountKey}",
}
],