Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie Delta Lake-Tabellenfunktionen entfernen und Protokollversionen herabstufen können.
Diese Funktionalität ist in Databricks Runtime 16.3 und höher verfügbar. Nicht alle Delta-Tabellenfunktionen können entfernt werden. Siehe Welche Delta-Tabellenfeatures können entfernt werden?
Sie sollten DROP FEATURE
nur verwenden, um die Kompatibilität mit früheren Versionen von Databricks Runtime, Delta Sharing oder externen Delta Lake-Reader- oder Writer-Clients zu unterstützen.
Hinweis
Legacyunterstützung für DROP FEATURE
ist ab Databricks Runtime 14.3 LTS verfügbar. Databricks empfiehlt die Verwendung von Databricks Runtime 16.3 und höher für alle DROP FEATURE
Befehle, die das Legacyverhalten ersetzen. Dokumentation zur Legacyfunktionalität finden Sie unter Entfernen von Delta-Tabellenfeatures (Legacy).
Eine Delta Lake Funktion entfernen
Um ein Tabellenmerkmal zu entfernen, verwenden Sie die folgende Syntax:
ALTER TABLE <table-name> DROP FEATURE <feature-name>
Sie müssen Databricks Runtime 16.3 oder höher verwenden und über MODIFY
-Berechtigungen für die Delta-Zieltabelle verfügen. Sie können nur eine Tabellenfunktion mit jedem DROP FEATURE
Befehl entfernen.
Weitere Informationen finden Sie unter ALTER TABLE.
Wichtig
Alle DROP FEATURE
Vorgä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.
Was geschieht, wenn eine Tabellenfunktion gelöscht wird?
Wenn Sie eine Tabellenfunktion entfernen, führt Delta Lake atomar Änderungen an der Tabelle durch, um Folgendes zu erreichen:
- Deaktivieren Sie Tabelleneigenschaften, die das Tabellenfeature verwenden.
- Schreiben Sie die Datendateien bei Bedarf neu, um alle Spuren des Tabellenfeatures aus den Datendateien zu entfernen, die die Tabelle in der aktuellen Version unterstützen.
- Erstellen Sie eine Reihe geschützter Prüfpunkte, mit denen Leserclients den Tabellenverlauf richtig interpretieren können.
- Fügen Sie das Writer-Tabellenfeature
checkpointProtection
zum Tabellenprotokoll hinzu. - Führen Sie ein Downgrade des Tabellenprotokolls auf die niedrigste Leser- und Schreiberversion durch, die alle verbleibenden Tabellenfunktionen unterstützt. Siehe niedrigstes mögliches Protokoll.
Was ist die checkpointProtection
Tabellenfunktion?
Wenn Sie ein Feature entfernen, schreibt Delta Lake Daten und Metadaten im Verlauf der Tabelle als geschützte Prüfpunkte um, um das Protokolldowngrade zu berücksichtigen. Nach dem Downgrade sollte die Tabelle immer von mehr Lesegeräten gelesen werden können. Dies liegt daran, dass das Protokoll für die Tabelle jetzt widerspiegelt, dass die Unterstützung für das verworfene Feature nicht mehr erforderlich ist, um die Tabelle zu lesen. Die geschützten Prüfpunkte und das checkpointProtection
Feature erreichen Folgendes:
- Leseclients, die das Feature zum Entfernen von Tabellen verstehen, können auf den gesamten Verlauf der Tabelle zugreifen.
- Leseclients, die das Feature zum Entfernen von Tabellen nicht unterstützen, müssen nur den Tabellenverlauf ab der Version des Protokolldowngrades lesen.
- Writer-Clients schreiben die Prüfpunkte vor dem Protokoll-Downgrade nicht um.
- Tabellenwartungsvorgänge respektieren die Anforderungen, die von
checkpointProtection
festgelegt werden. Diese kennzeichnen die Prüfpunkte für das Protokolldowngrade als geschützt.
Sie können zwar mit jedem DROP FEATURE
Befehl nur ein Tabellen-Feature löschen, aber eine Tabelle kann über mehrere geschützte Prüfpunkte und entfernte Features im Tabellenverlauf verfügen.
Alle Databricks-Runtime-Versionen unterstützen das checkpointProtection
Tabellenfeature, d. h. dieses Tabellenfeature blockiert keine Lese- oder Schreibvorgänge in Azure Databricks.
Das Tabellenfeature checkpointProtection
sollte den Zugriff von OSS Delta Lake-Clients im Lesemodus nicht blockieren. Um die Tabelle vollständig zu downgraden und das checkpointProtection
Tabellenfeature zu entfernen, müssen Sie TRUNCATE HISTORY
verwenden. Databricks empfiehlt die Verwendung dieses Musters nur, wenn Sie in Tabellen mit externen Delta-Clients schreiben müssen, die checkpointProtection
nicht unterstützen. Siehe Vollständiges Downgrade von Tabellenprotokollen für Legacyclients.
Welche Delta-Tabellenfunktionen können gelöscht werden?
Sie können die folgenden Delta-Tabellenfeatures ablegen:
-
checkConstraints
. Weitere Informationen finden Sie unter Einschränkungen bei Azure Databricks. -
collations-preview
. Weitere Informationen finden Sie unter Sortierungsunterstützung für Delta Lake. -
columnMapping
. Weitere Informationen finden Sie unter Rename and drop columns with Delta Lake column mapping (Umbenennen und Löschen von Spalten mit Delta Lake-Spaltenzuordnung). -
deletionVectors
. Weitere Informationen finden Sie unter Was sind Löschvektoren?. -
typeWidening
. Weitere Informationen finden Sie unter Typerweiterung. -
v2Checkpoint
. Siehe Kompatibilität für Tabellen mit Liquid Clustering. -
checkpointProtection
. Siehe Was ist dascheckpointProtection
-Tabellenfeature?.
Sie können keine anderen Delta-Tabellenfeatures ablegen.
Wichtig
Durch das Ablegen der Spaltenzuordnung aus einer Tabelle werden die zufälligen Präfixe, die in Verzeichnisnamen für partitionierte Tabellen verwendet werden, nicht entfernt. Sehen Sie sich an: Teilen Delta Lake und Parquet Partitionierungsstrategien?.
Einige Delta Lake-Funktionen ermöglichen mehrere Tabellenfeatures. Einige Tabellenfeatures sind von anderen Tabellenfeatures abhängig und können das Ablegen abhängiger Tabellenfeatures blockieren. Da einige Tabellenfeatures nicht gelöscht werden können, bedeutet dies, dass die Aktivierung einiger Delta Lake-Features nicht rückgängig gemacht werden kann.
Databricks empfiehlt, abhängige Workloads und Systeme immer auf Kompatibilität mit neuen Funktionen zu testen, bevor Funktionen aktiviert werden, die Lese- oder Schreibprotokolle für Produktionsdaten aktualisieren.
Vollständiges Downgrade der Tabellenprotokolle für Legacy-Clients
Wenn Integrationen mit externen Delta Lake-Clients Schreibvorgänge erfordern, die das checkpointProtection
-Tabellenfeature nicht unterstützen, müssen Sie mit TRUNCATE HISTORY
alle Elemente der deaktivierten Tabellenfeatures vollständig entfernen und ein vollständiges Downgrade des Tabellenprotokolls durchführen.
Databricks empfiehlt, das Standardverhalten von DROP FEATURE
zu testen, bevor Sie mit TRUNCATE HISTORY
fortfahren. Mit dem Ausführen von TRUNCATE HISTORY
wird der gesamte Tabellenverlauf entfernt, der älter als 24 Stunden ist.
Das vollständige Downgrade der Tabelle erfolgt in zwei Schritten, die in einem Abstand von mindestens 24 Stunden durchgeführt werden müssen.
Schritt 1: Vorbereiten des Ablegens einer Tabellenfunktion
Während der ersten Phase bereitet sich der Benutzer darauf vor, das Tabellenfeature abzulegen. Im Folgenden wird beschrieben, was während dieser Phase geschieht:
- Sie führen den
ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
Befehl aus. - Tabelleneigenschaften, die ein Tabellenfeature speziell aktivieren, haben Werte zum Deaktivieren des Features festgelegt.
- Tabelleneigenschaften, die das Verhalten steuern, die dem abgelegten Feature zugeordnet sind, haben Optionen auf Standardwerte vor der Einführung des Features festgelegt.
- Bei Bedarf werden Daten- und Metadatendateien in Bezug auf die aktualisierten Tabelleneigenschaften umgeschrieben.
- Der Befehl wird abgeschlossen und gibt eine Fehlermeldung zurück, die den Benutzer informiert, dass er 24 Stunden warten muss, um mit der Entfernung des Features fortzufahren.
Nach dem ersten Deaktivieren eines Features können Sie mit dem Schreiben in die Zieltabelle fortfahren, bevor Sie das Protokolldowngrade abschließen, aber Sie können das Tabellenfeature nicht verwenden, das Sie entfernen.
Hinweis
Wenn Sie die Tabelle in diesem Zustand belassen, verwenden Vorgänge für die Tabelle das Tabellenfeature nicht, aber das Protokoll unterstützt das Tabellenfeature weiterhin. Bis Sie den letzten Schritt zum Herabstufen abgeschlossen haben, ist die Tabelle von Delta-Clients, die das Tabellenfeature nicht verstehen, nicht lesbar.
Schritt 2: Downgrade des Protokolls und Ablegen eines Tabellenfeatures
So entfernen Sie den gesamten Transaktionsverlauf, der dem Feature zugeordnet ist, und führen Sie ein Downgrade des Protokolls durch:
- Nachdem mindestens 24 Stunden vergangen sind, führen Sie den
ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
Befehl aus. - Der Client bestätigt, dass keine Transaktionen im angegebenen Aufbewahrungsschwellenwert das Tabellenfeature verwenden, und schneidet dann den Tabellenverlauf auf diesen Schwellenwert ab.
- Die Tabellenfunktion wird während des Protokolldowngrades verworfen.
- Wenn die Tabellenfeatures, die in der Tabelle vorhanden sind, durch eine niedrigere Protokollversion dargestellt werden können, werden die
minReaderVersion
undminWriterVersion
für die Tabelle auf die niedrigste Version herabgestuft, die die verbleibenden Features unterstützt, die von der Delta-Tabelle verwendet werden.
Wichtig
Das Ausführen von ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
entfernt alle Transaktionsprotokolldaten, die älter als 24 Stunden sind. Nachdem Sie diesen Befehl zum Downgrade des Tabellenprotokolls verwendet haben, haben Sie keinen Zugriff auf den Tabellenverlauf oder die Zeitreise.