Teilen über


Azure Stream Analytics: Schreiben in eine Delta Lake-Tabelle

Delta Lake ist ein offenes Format, das Zuverlässigkeit, Qualität und Leistung für Data Lakes gewährleistet. Mit Azure Stream Analytics können Sie Streamingdaten direkt und ganz ohne Programmieraufwand in Ihre Delta Lake-Tabellen schreiben.

Ein Stream Analytics-Auftrag kann so konfiguriert werden, dass Schreibvorgänge über einen nativen Delta Lake-Ausgabeconnector erfolgen – entweder in einer neuen oder in einer vorab erstellten Delta-Tabelle in einem Azure Data Lake Storage Gen2-Konto. Dieser Connector ist für die Hochgeschwindigkeitserfassung von Delta-Tabellen im Anfügemodus optimiert. Es bietet auch Genau-einmal-Semantik, die garantiert, dass keine Daten verloren gehen oder dupliziert werden. Die Erfassung von Echtzeitdatenströmen aus Azure Event Hubs in Delta-Tabellen ermöglicht interaktive oder batchbasierte Ad-hoc-Analysen.

Delta Lake-Konfiguration

Um Daten in Delta Lake zu schreiben, müssen Sie eine Verbindung mit einem Data Lake Storage Gen2-Konto herstellen. Die folgende Tabelle enthält die Eigenschaften, die sich auf die Delta Lake-Konfiguration beziehen:

Eigenschaftenname BESCHREIBUNG
Ereignisserialisierungsformat Das Serialisierungsformat für Ausgabedaten. JSON, CSV, Avro und Parquet werden unterstützt. Delta Lake ist hier als Option aufgeführt. Bei Verwendung von Delta Lake liegen die Daten im Parquet-Format vor.
Deltapfadname Dieser Pfad wird verwendet, um Ihre Delta Lake-Tabelle innerhalb des angegebenen Containers zu schreiben. Er enthält den Tabellennamen. Weitere Informationen hierzu finden Sie im nächsten Abschnitt.
Partitionsspalte Optional. Der Feldname ({field}) Ihrer Ausgabedaten für die Partition. Es wird nur eine einzelne Partitionsspalte unterstützt. Der Wert der Spalte muss vom Typ string sein.

Eine vollständige Liste der Data Lake Storage Gen2-Konfiguration finden Sie in der Übersicht über Azure Data Lake Storage Gen2.

Deltapfadname

Der Delta-Pfadname wird verwendet, um den Speicherort und den Namen Ihrer in Data Lake Storage Gen2 gespeicherten Delta Lake-Tabelle anzugeben.

Sie können ein einzelnes Pfadsegment oder mehrere Pfadsegmente verwenden, um den Pfad zur Delta-Tabelle sowie den Delta-Tabellennamen zu definieren. Ein Pfadsegment ist die Zeichenfolge zwischen aufeinanderfolgenden Trennzeichen (z. B. der Schrägstrich (/)), die dem Namen eines virtuellen Verzeichnisses entspricht.

Der Segmentname ist alphanumerisch und kann Leerstellen, Bindestriche und Unterstriche enthalten. Das letzte Pfadsegment wird als Tabellenname verwendet.

Einschränkungen für den Delta-Pfadnamen:

  • Bei Feldnamen wird nicht zwischen Groß- und Kleinschreibung unterschieden. Der Dienst kann z. B. nicht zwischen den Spalten ID und id unterscheiden.
  • Es ist kein dynamischer {field}-Name zulässig. Beispielsweise wird {ID} als Text „{ID}“ behandelt.
  • Die Anzahl der Pfadsegmente, aus denen der Name besteht, darf höchstens 254 betragen.

Beispiele

Beispiele für einen Deltapfadnamen:

  • Beispiel 1: WestUS/CA/factory1/device-table
  • Beispiel 2: Test/demo
  • Beispiel 3: mytable

Beispielausgabedateien:

  1. Unter dem ausgewählten Container lautet der Verzeichnispfad WestEurope/CA/factory1, und der Name des Delta-Tabellenordners lautet device-table.
  2. Unter dem ausgewählten Container lautet der Verzeichnispfad Test, und der Name des Delta-Tabellenordners lautet demo.
  3. Unter dem ausgewählten Container lautet der Name des Delta-Tabellenordners mytable.

Erstellen einer neuen Tabelle

Wenn nicht bereits eine gleichnamige Delta Lake-Tabelle an dem durch den Delta-Pfadnamen angegebenen Speicherort vorhanden ist, erstellt Stream Analytics standardmäßig eine neue Delta-Tabelle. Diese neue Tabelle wird mit der folgenden Konfiguration erstellt:

Schreiben in die Tabelle

Ist an dem durch den Delta-Pfadnamen angegebenen Speicherort bereits eine gleichnamige Delta Lake-Tabelle vorhanden, werden von Stream Analytics standardmäßig neue Datensätze in die vorhandene Tabelle geschrieben.

Genau-einmal-Übermittlung

Dank des Transaktionsprotokolls kann Delta Lake gewährleisten, dass die Verarbeitung genau einmal erfolgt. Stream Analytics bietet auch eine Genau-einmal-Übermittlung, wenn im Rahmen einer einzelnen Auftragsausführung Daten an Data Lake Storage Gen2 ausgegeben werden.

Schemaerzwingung

Schemaerzwingung bedeutet, dass alle neuen Schreibvorgänge in einer Tabelle zum Zeitpunkt des Schreibvorgangs mit dem Schema der Zieltabelle kompatibel sein müssen, um die Qualität der Daten zu gewährleisten.

Alle Datensätze der Ausgabedaten werden auf das Schema der vorhandenen Tabelle projiziert. Wenn die Ausgabe in eine neue Delta-Tabelle geschrieben wird, wird das Tabellenschema mit dem ersten Datensatz erstellt. Wenn die eingehenden Daten eine zusätzliche Spalte aufweisen, die im vorhandenen Tabellenschema nicht vorhanden ist, werden sie ohne die zusätzliche Spalte in die Tabelle geschrieben. Wenn in den eingehenden Daten eine Spalte fehlt, die im vorhandenen Tabellenschema vorhanden ist, werden sie in die Tabelle geschrieben, und die betreffende Spalte ist NULL.

Wenn es keine Schnittmenge zwischen dem Schema der Delta-Tabelle und dem Schema eines Datensatzes des Streamingauftrags gibt, gilt dies als Schemakonvertierungsfehler. Dies ist nicht der einzige Fall, der als Schemakonvertierungsfehler betrachtet wird.

Wenn die Schemakonvertierung fehlschlägt, richtet sich das Verhalten des Auftrags nach der auf Auftragsebene konfigurierten Richtlinie zur Fehlerbehandlung für Ausgabedaten.

Delta-Protokollprüfpunkte

Der Stream Analytics-Auftrag erstellt regelmäßig Delta-Protokollprüfpunkte im V1-Format. Delta-Protokollprüfpunkte sind Momentaufnahmen der Delta-Tabelle und enthalten in der Regel den Namen der Datendatei, die vom Stream Analytics-Auftrag generiert wird. Eine große Anzahl von Datendateien führt zu großen Prüfpunkten, was wiederum zu Speicherproblemen im Stream Analytics-Auftrag führen kann.

Begrenzungen

  • Dynamische Partitionsschlüssel (Angeben des Namens einer Spalte des Datensatzschemas im Delta-Pfad) werden nicht unterstützt.
  • Mehrere Partitionsspalten werden nicht unterstützt. Wenn Sie mehrere Partitionsspalten verwenden möchten, empfiehlt es sich, einen zusammengesetzten Schlüssel in der Abfrage zu verwenden und diesen als Partitionsspalte anzugeben.
    • Ein zusammengesetzter Schlüssel kann in der Abfrage erstellt werden. z. B. "SELECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]".
  • Schreibvorgänge für Delta Lake werden nur im Anfügemodus durchgeführt.
  • Bei Abfragetests ist keine Schemaüberprüfung verfügbar.
  • Eine Komprimierung kleiner Dateien wird von Stream Analytics nicht ausgeführt.
  • Alle Datendateien werden ohne Komprimierung erstellt.
  • Die Datums- und Dezimaltypen werden nicht unterstützt.
  • Beim Schreiben in vorhandene Tabellen von Writer Version 7 oder höher mit Writer-Features tritt ein Fehler auf.
  • Wenn ein Stream Analytics-Auftrag einen Datenbatch in einen Delta Lake schreibt, kann er mehrere Aktionen vom Typ Datei hinzufügen generieren. Wenn zu viele Aktionen „Datei hinzufügen“ für einen einzelnen Batch generiert werden, kann ein Stream Analytics-Auftrag hängen bleiben.
  • Stream Analytics-Aufträge können nur einteilige V1-Prüfpunkte lesen und schreiben. Mehrteilige Prüfpunkte und das V2-Prüfpunktformat werden nicht unterstützt.