Freigeben über


Entfernen Sie ein Delta Lake-Tabellenmerkmal und stufen Sie das Tabellenprotokoll herab.

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:

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:

  1. Sie führen den ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY Befehl aus.
  2. Tabelleneigenschaften, die ein Tabellenfeature speziell aktivieren, haben Werte zum Deaktivieren des Features festgelegt.
  3. Tabelleneigenschaften, die das Verhalten steuern, die dem abgelegten Feature zugeordnet sind, haben Optionen auf Standardwerte vor der Einführung des Features festgelegt.
  4. Bei Bedarf werden Daten- und Metadatendateien in Bezug auf die aktualisierten Tabelleneigenschaften umgeschrieben.
  5. 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:

  1. Nachdem mindestens 24 Stunden vergangen sind, führen Sie den ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY Befehl aus.
  2. Der Client bestätigt, dass keine Transaktionen im angegebenen Aufbewahrungsschwellenwert das Tabellenfeature verwenden, und schneidet dann den Tabellenverlauf auf diesen Schwellenwert ab.
  3. Die Tabellenfunktion wird während des Protokolldowngrades verworfen.
  4. Wenn die Tabellenfeatures, die in der Tabelle vorhanden sind, durch eine niedrigere Protokollversion dargestellt werden können, werden die minReaderVersion und minWriterVersion 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.

Siehe Delta Lake Featurekompatibilität und Protokolle.