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, Stream Analytics-Tools für Visual Studio Code zu verwenden, um eine 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.

Für einige Ausgabetypen wird die Partitionierung unterstützt, und die Ausgabebatchgrößen variieren, um den Durchsatz zu optimieren. Die folgende Tabelle zeigt die Features, die für die jeweiligen Ausgabetypen unterstützt werden:

Ausgabetyp Partitionierung Sicherheit
Azure Data Lake Storage Gen 1 Ja Azure Active Directory-Benutzer,
Verwaltete Identität
Azure Data Explorer Ja Verwaltete Identität
Azure-Datenbank für PostgreSQL Ja Authentifizierung mit Benutzername und Kennwort
Azure SQL-Datenbank Ja, optional SQL-Benutzerauthentifizierung,
Verwaltete Identität
Azure Synapse Analytics Ja SQL-Benutzerauthentifizierung,
Verwaltete Identität
Blob Storage und Azure Data Lake Gen 2 Ja Zugriffsschlüssel,
Verwaltete Identität
Azure Event Hubs Ja, Sie müssen die Partitionsschlüsselspalte in der Ausgabekonfiguration festlegen. Zugriffsschlüssel,
Verwaltete Identität
Power BI Nein Azure Active Directory-Benutzer,
Verwaltete Identität
Azure Table Storage Ja Kontoschlüssel
Azure Service Bus-Warteschlangen Ja Zugriffsschüssel
Azure Service Bus-Themen Ja Zugriffsschüssel
Azure Cosmos DB Ja Zugriffsschüssel
Azure-Funktionen Ja Zugriffsschü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. In der Tabelle oben 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 Schemas in einer einzelnen Datei.

Das folgende Verhalten kann auftreten, wenn ein Stream mit variablen Schemas 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. Bei Rückstau beeinträchtigt dies wiederum stark die Gesamtleistung des Auftrags.
  • 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.

Es wird dringend empfohlen, Ausgaben, die das Avro- oder Parquet-Format nutzen, als stark typisiert (oder Schema-on-Write) zu betrachten und darauf ausgerichtete Abfragen dementsprechend zu 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:

  1. timeWindow

    Die maximale Wartezeit pro Batch. Dieser Wert sollte eine Zeichenfolge für die Zeitspanne 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.

  2. 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 unterstützt. Nachstehend 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}",
          }
          ],

Nächste Schritte