Wie verwaltet Azure Databricks die Kompatibilität von Delta Lake-Features?

Delta Lake ist ein unabhängiges Open-Source-Projekt unter der Leitung der Linux Foundation. Databricks führt Unterstützung für neue Delta Lake-Features und Optimierungen ein, die auf Delta Lake in Databricks Runtime-Releases aufbauen.

Azure Databricks-Optimierungen, die Delta Lake-Features nutzen, berücksichtigen die in OSS-Delta Lake verwendeten Protokolle zur Kompatibilität.

Viele Azure Databricks-Optimierungen erfordern die Aktivierung von Delta Lake-Features für eine Tabelle. Delta Lake-Features sind immer abwärtskompatibel, sodass Tabellen, die von einer niedrigeren Databricks Runtime-Version geschrieben wurden, immer von einer höheren Databricks Runtime-Version gelesen und geschrieben werden können. Durch das Aktivieren einiger Features wird die Vorwärtskompatibilität mit Workloads unterbrochen, die in einer niedrigeren Databricks Runtime-Version ausgeführt werden. Für Features, die die Vorwärtskompatibilität unterbrechen, müssen Sie alle Workloads aktualisieren, die auf die upgegradeten Tabellen verweisen, um eine kompatible Databricks Runtime-Version zu verwenden.

Hinweis

Sie können deletionVectors, v2Checkpoint, columnMapping und typeWidening-preview in Azure Databricks ablegen. Siehe Delta-Tabellenfeatures ablegen.

Wichtig

Alle Protokolländerungsvorgänge verursachen einen Konflikt mit allen gleichzeitigen Schreibvorgängen.

Streaming-Lesevorgänge schlagen fehl, wenn ein Commit auftritt, der Tabellenmetadaten ändert. Wenn der Stream fortgesetzt werden soll, müssen Sie ihn neu starten. Empfohlene Methoden finden Sie unter Produktionsüberlegungen für strukturiertes Streaming.

Welche Delta Lake-Features erfordern Databricks Runtime-Upgrades?

Die folgenden Delta Lake-Features unterbrechen die Vorwärtskompatibilität. Features werden auf Tabellenbasis aktiviert. Diese Tabelle führt die niedrigsten Databricks Runtime-Versionen auf, die von Azure Databricks weiterhin unterstützt werden.

Feature Erfordert Databricks Runtime-Version oder höher Dokumentation
CHECK Einschränkungen Databricks Runtime 9.1 LTS Festlegen einer CHECK-Einschränkung in Azure Databricks
Ändern des Datenfeeds Databricks Runtime 9.1 LTS Verwenden Sie den Delta Lake-Änderungs-Datenfeed in Azure Databricks
Generierte Spalten Databricks Runtime 9.1 LTS Von Delta Lake generierte Spalten
Spaltenzuordnung Databricks Runtime 10.4 LTS Umbenennen und Löschen von Spalten mit Delta Lake-Spaltenzuordnung
Identitätsspalten Databricks Runtime 10.4 LTS Verwenden von Identitätsspalten in Delta Lake
Tabellenfunktionen Databricks Runtime 12.2 LTS Was sind Tabellenfeatures?
Löschvektoren Databricks Runtime 12.2 LTS Was sind Löschvektoren?
TimestampNTZ Databricks Runtime 13.3 LTS TIMESTAMP_NTZ-Typ
UniForm Databricks Runtime 13.3 LTS Verwenden von UniForm zum Lesen von Delta-Tabellen mit Iceberg-Clients
Liquid Clustering Databricks Runtime 13.3 LTS Verwenden von Liquid Clustering für Delta-Tabellen
Zeilenverfolgung Databricks Runtime 14.1 Verwenden der Zeilenverfolgung für Delta-Tabellen
Typerweiterung Databricks Runtime 15.2 Typerweiterung
Variant Databricks Runtime 15.3 Unterstützung von Varianten in Delta Lake

Weitere Informationen finden Sie unter Versionshinweise, Versionen und Kompatibilität von Databricks Runtime.

Hinweis

Delta Live Tables und Databricks SQL führen automatisch Upgrades für Runtimeumgebungen durch mit regelmäßigen Releases zur Unterstützung neuer Features. Siehe Versionshinweise zu Delta Live Tables und zum Releaseupgradeprozess und Versionshinweise für Databricks SQL.

Was ist eine Tabellenprotokollspezifikation?

Jede Delta-Tabelle weist eine Protokollspezifikation auf, die den von der Tabelle unterstützten Satz von Features angibt. Die Protokollspezifikation wird von Anwendungen verwendet, welche die Tabelle lesen oder schreiben, um zu ermitteln, ob sie mit allen Features umgehen können, welche die Tabelle unterstützt. Wenn eine Anwendung nicht weiß, wie sie ein Feature behandeln soll, das im Protokoll einer Tabelle als unterstützt aufgeführt ist, dann kann diese Anwendung diese Tabelle nicht lesen oder schreiben.

Die Protokollspezifikation ist in zwei Komponenten unterteilt: das Leseprotokoll und das Schreibprotokoll.

Warnung

Die meisten Protokollversionsupgrades können nicht rückgängig gemacht werden, und das Upgraden der Protokollversion könnte die vorhandenen Reader und/oder Writer für die Delta Lake-Tabelle unterbrechen. Databricks empfiehlt, dass Sie für bestimmte Tabellen nur bei Bedarf ein Upgrade durchführen, z. B. um neue Features in Delta Lake zu abonnieren. Sie sollten auch überprüfen, ob alle Ihre aktuellen und zukünftigen Produktionstools Delta Lake-Tabellen mit der neuen Protokollversion unterstützen.

Protokollherabstufungen sind für einige Features verfügbar. Siehe Delta-Tabellenfeatures ablegen.

Leseprotokoll

Das Leseprotokoll führt alle Features auf, die eine Tabelle unterstützt und die eine Anwendung verstehen muss, um die Tabelle korrekt zu lesen. Das Upgraden des Leseprotokolls einer Tabelle erfordert, dass alle Reader-Anwendungen die hinzugefügten Features unterstützen.

Wichtig

Alle Anwendungen, die in eine Delta-Tabelle schreiben, müssen eine Momentaufnahme der Tabelle konstruieren können. Daher müssen Workloads, die in Delta-Tabellen schreiben, sowohl Reader- als auch Writer-Protokollanforderungen berücksichtigen.

Wenn Sie auf ein Protokoll stoßen, das von einer Workload in Azure Databricks nicht unterstützt wird, müssen Sie ein Upgrade auf eine höhere Databricks Runtime durchführen, welche dieses Protokoll unterstützt.

Schreibprotokoll

Das Schreibprotokoll führt alle Features auf, die eine Tabelle unterstützt und die eine Anwendung verstehen muss, um korrekt in die Tabelle zu schreiben. Das Upgraden des Schreibprotokolls einer Tabelle erfordert, dass alle Writer-Anwendungen die hinzugefügten Features unterstützen. Es wirkt sich nicht auf schreibgeschützte Anwendungen aus, es sei denn, für das Leseprotokoll wird ebenfalls ein Upgrade durchgeführt.

Für welche Protokolle muss ein Upgrade durchgeführt werden?

Einige Features erfordern das Upgraden sowohl des Leseprotokolls als auch des Schreibprotokolls. Andere Features erfordern nur das Upgraden des Schreibprotokolls.

Beispiel: die Unterstützung für CHECK-Einschränkungen ist ein Schreibprotokollfeature: Nur schreibende Anwendungen müssen von CHECK-Einschränkungen wissen und sie erzwingen.

Im Gegensatz dazu erfordert die Spaltenzuordnung das Upgraden sowohl der Lese- als auch der Schreibprotokolle. Da die Daten in der Tabelle unterschiedlich gespeichert werden, müssen Reader-Anwendungen die Spaltenzuordnung verstehen, damit sie die Daten korrekt lesen können.

Minimale Reader- und Writer-Versionen

Hinweis

Sie müssen die Tabellenprotokollversion explizit upgraden, wenn Sie die Spaltenzuordnung aktivieren.

Wenn Sie Delta-Features in einer Tabelle aktivieren, erfolgt ein automatisches Upgrade des Tabellenprotokolls. Databricks empfiehlt, die Tabelleneigenschaften minReaderVersion und minWriterVersion nicht zu ändern. Das Ändern dieser Tabelleneigenschaften verhindert keine Protokollupgrades. Wenn Sie diese Werte auf einen niedrigeren Wert festlegen, wird die Tabelle nicht herabgestuft. Siehe Delta-Tabellenfeatures ablegen.

Was sind Tabellenfeatures?

In Databricks Runtime 12.2 LTS und höher haben Delta Lake-Tabellenfeatures granulare Flags eingeführt, die angeben, welche Features von einer bestimmten Tabelle unterstützt werden. In Databricks Runtime 11.3 LTS und darunter wurden Delta Lake-Features in Bündeln namens Protokollversionen aktiviert. Tabellenfeatures sind die Nachfolger von Protokollversionen und wurden mit dem Ziel entwickelt, die Flexibilität für Clients zu verbessern, die Delta Lake lesen und schreiben. Siehe Was ist eine Protokollversion?.

Hinweis

Tabellenfeatures haben Anforderungen an die Protokollversion. Siehe Features nach Protokollversion.

Ein Delta-Tabellenfeature ist ein Marker, der angibt, dass die Tabelle ein bestimmtes Feature unterstützt. Jedes Feature ist entweder ein Schreibprotokollfeature (d. h. es wird nur ein Upgrade für das Schreibprotokoll durchgeführt) oder ein Lese-/Schreibprotokollfeature (d. h. für Lese- und Schreibprotokolle wird ein Upgrade durchgeführt, um das Feature zu aktivieren).

Weitere Informationen zu unterstützten Tabellenfeatures in Delta Lake finden Sie unter Delta Lake-Protokoll.

Ändern Tabellenfeatures, wie Delta Lake-Features aktiviert werden?

Wenn Sie mit Delta-Tabellen nur über Azure Databricks interagieren, können Sie weiterhin die Unterstützung für Delta Lake-Features mithilfe von Mindestanforderungen für Databricks Runtime nachverfolgen. Azure Databricks unterstützt das Lesen von Delta-Tabellen, für die in allen Databricks Runtime LTS-Releases ein Upgrade auf Tabellenfeatures durchgeführt wurde, solange alle von der Tabelle verwendeten Features von diesem Release unterstützt werden.

Wenn Sie mittels anderen Systemen aus Delta-Tabellen lesen und schreiben, müssen Sie möglicherweise überlegen, wie sich Tabellenfeatures auf die Kompatibilität auswirken, da ein Risiko besteht, dass das System die aktualisierten Protokollversionen nicht verstehen konnte.

Wichtig

Tabellenfeatures werden im Delta Lake-Format für die Writer-Version 7 und die Reader-Version 3 eingeführt. Azure Databricks hat Code in alle unterstützten Databricks Runtime LTS-Versionen zurückportiert, um Unterstützung für Tabellenfeatures hinzuzufügen, aber nur für diejenigen Features, die in dieser Databricks Runtime bereits unterstützt werden. Dies bedeutet, dass Sie zwar die Verwendung von Tabellenfeatures abonnieren können, um generierte Spalten zu aktivieren und weiterhin mit diesen Tabellen in Databricks Runtime 9.1 LTS zu arbeiten, aber Tabellen mit aktivierten Identitätsspalten (die Databricks Runtime 10.4 LTS erfordern) werden in dieser Databricks Runtime immer noch nicht unterstützt.

Was ist eine Protokollversion?

Eine Protokollversion ist eine Protokollnummer, die eine bestimmte Gruppierung von Tabellenfeatures angibt. In Databricks Runtime 11.3 LTS und darunter können Sie Tabellenfeatures nicht einzeln aktivieren. Protokollversionen bündeln eine Gruppe von Features.

Delta-Tabellen geben eine separate Protokollversion für Leseprotokoll und Schreibprotokoll an. Das Transaktionsprotokoll für eine Delta-Tabelle enthält Protokollversionsinformationen, die die Delta Lake-Entwicklung unterstützen. Weitere Informationen finden Sie unter Überprüfen der Details der Delta Lake-Tabelle mit Beschreibungsdetails.

Die Protokollversionen bündeln alle Features aus früheren Protokollen. Siehe Features nach Protokollversion.

Hinweis

Beginnend mit der Writer-Version 7 und der Reader-Version 3 hat Delta Lake das Konzept der Tabellenfeatures eingeführt. Mithilfe von Tabellenfeatures können Sie jetzt nur diejenigen Features aktivieren, die von anderen Clients in Ihrem Datenökosystem unterstützt werden. Siehe Was sind Tabellenfeatures?.

Features nach Protokollversion

In der folgenden Tabelle sind Mindestprotokollversionen aufgeführt, die für Delta Lake-Features erforderlich sind.

Hinweis

Wenn Sie nur an der Kompatibilität von Databricks Runtime interessiert sind, lesen Sie Welche Delta Lake-Features erfordern Databricks Runtime-Upgrades?. Delta Sharing unterstützt nur das Lesen von Tabellen mit Features, die minReaderVersion = 1 erfordern.

Feature minWriterVersion minReaderVersion Dokumentation
Grundfunktion 2 1 Was ist Delta Lake?
CHECK Einschränkungen 3 1 Festlegen einer CHECK-Einschränkung in Azure Databricks
Ändern des Datenfeeds 4 1 Verwenden Sie den Delta Lake-Änderungs-Datenfeed in Azure Databricks
Generierte Spalten 4 1 Von Delta Lake generierte Spalten
Spaltenzuordnung 5 2 Umbenennen und Löschen von Spalten mit Delta Lake-Spaltenzuordnung
Identitätsspalten 6 2 Verwenden von Identitätsspalten in Delta Lake
Tabellenfeatures „lesen“ 7 1 Was sind Tabellenfeatures?
Tabellenfeatures „schreiben“ 7 3 Was sind Tabellenfeatures?
Zeilenverfolgung 7 1 Verwenden der Zeilenverfolgung für Delta-Tabellen
Löschvektoren 7 3 Was sind Löschvektoren?
TimestampNTZ 7 3 TIMESTAMP_NTZ-Typ
Liquid Clustering 7 3 Verwenden von Liquid Clustering für Delta-Tabellen
UniForm 7 2 Verwenden von UniForm zum Lesen von Delta-Tabellen mit Iceberg-Clients
Typerweiterung 7 3 Typerweiterung
Variant 7 3 Unterstützung von Varianten in Delta Lake