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
undid
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:
- Unter dem ausgewählten Container lautet der Verzeichnispfad
WestEurope/CA/factory1
, und der Name des Delta-Tabellenordners lautet device-table. - Unter dem ausgewählten Container lautet der Verzeichnispfad
Test
, und der Name des Delta-Tabellenordners lautet demo. - 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:
- Writer Version 2
- Reader Version 1
- Die Tabelle ist auf nur anfügen festgelegt.
- Das Tabellenschema wird mit dem Schema des ersten Datensatzes 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]"
.
- Ein zusammengesetzter Schlüssel kann in der Abfrage erstellt werden. z. B.
- 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.
- Beispiel: Beim Schreiben in vorhandene Tabellen mit aktivierten Löschvektoren tritt ein Fehler auf.
- Die folgenden Ausnahmen sind die Writer-Features changeDataFeed und appendOnly.
- 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.
- Die Anzahl der generierten Aktionen „Datei hinzufügen“ hängt von vielen Faktoren ab:
- Größe des Batches. Die Größe wird durch das Datenvolumen und die Batchverarbeitungsparameter für die Mindestanzahl von Zeilen und die maximal zulässige Zeit bestimmt.
- Kardinalität der Partitionsspaltenwerten des Batches
- So verringern Sie die Anzahl der für einen Batch generierten Aktionen „Datei hinzufügen“:
- Reduzieren Sie die Batchkonfigurationen für Mindestanzahl von Zeilen und maximal zulässige Zeit.
- Verringern Sie die Kardinalität der Partitionsspaltenwerte durch Optimieren der Eingabedaten oder Auswählen einer anderen Partitionsspalte.
- Die Anzahl der generierten Aktionen „Datei hinzufügen“ hängt von vielen Faktoren ab:
- 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.