Share via


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 schnelle Erfassung von Daten in Deltatabellen im Anfügemodus optimiert und bietet auch Semantik vom Typ „Exactly Once“, um sicherzustellen, dass keine Daten verloren gehen oder dupliziert werden. Die Erfassung von Echtzeitdatenströmen aus Azure Event Hubs in Deltatabellen 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 Azure 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 Der Pfad, der verwendet wird, um Ihre Delta Lake-Tabelle innerhalb des angegebenen Containers zu schreiben. Er enthält den Tabellennamen. Weitere Informationen 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. Beim Wert der Spalte muss es sich um eine Zeichenfolge handeln.

Die vollständige Liste für die ADLS Gen2-Konfiguration finden Sie in der Übersicht über ADLS Gen2.

Deltapfadname

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

Sie können ein einzelnes Pfadsegment oder mehrere Pfadsegmente verwenden, um den Pfad zur Deltatabelle sowie den Deltatabellennamen 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.

Für den Deltapfadnamen gelten folgende Einschränkungen:

  • 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 Feldname ({field}) zulässig. {ID} wird beispielsweise als Text „{ID}“ behandelt.
  • Die Anzahl von Pfadsegmenten, aus denen der Name besteht, darf maximal 254 betragen.

Beispiele

Beispiele für den Deltapfadnamen:

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

Beispielausgabedateien:

  1. Unter dem ausgewählten Container wäre der Verzeichnispfad WestEurope/CA/factory1 und der Ordnername der Delta-Tabelle device-table.
  2. Unter dem ausgewählten Container wäre der Verzeichnispfad Test und der Ordnername der Delta-Tabelle demo.
  3. Unter dem gewählten Container wäre der Ordnername der Deltatabelle mytable.

Erstellen einer neuen Tabelle

Wenn nicht bereits eine Delta Lake-Tabelle mit demselben Namen an dem durch den Delta-Pfadnamen angegebenen Speicherort vorhanden ist, erstellt Azure 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 Deltapfadnamen angegebenen Ort bereits eine Delta Lake-Tabelle gleichen Namens vorhanden, werden von Azure Stream Analytics standardmäßig neue Datensätze in die vorhandene Tabelle geschrieben.

Exakt eine Übermittlung

Dank des Transaktionsprotokolls kann Delta Lake genau eine Verarbeitung garantieren. Azure Stream Analytics bietet ebenfalls exakt eine Übermittlung, wenn im Rahmen einer einzelnen Auftragsausführung Daten an Azure 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.

Sollte die Schemakonvertierung nicht erfolgreich sein, 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

  • Dynamischer Partitionsschlüssel (Angeben des Namens einer Spalte des Datensatzschemas im Delta-Pfad) wird nicht unterstützt.
  • Mehrere Partitionsspalten werden nicht unterstützt. Wenn mehrere Partitionsspalten gewünscht werden, empfiehlt es sich, einen zusammengesetzten Schlüssel in der Abfrage zu verwenden und dann als Partitionsspalte anzugeben.
    • Ein zusammengesetzter Schlüssel kann in der Abfrage erstellt werden. Beispiel: „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.

Nächste Schritte