Een Delta Lake-tabelfunctie verwijderen en tabelprotocol downgraden

In Databricks Runtime 16.4 LTS en hoger DROP FEATURE verwijdert u een Delta Lake-tabelfunctie en downgradet u het tabelprotocol naar de laagste versie die ondersteuning biedt voor de resterende functies. Gebruik dit alleen om compatibiliteit met eerdere Databricks Runtime-versies, OpenSharing of externe Delta Lake-clients te herstellen.

Niet alle functies kunnen worden verwijderd. Zie Ondersteunde tabelfuncties.

Note

Verouderde ondersteuning voor DROP FEATURE is beschikbaar vanaf Databricks Runtime 14.3 LTS. Databricks raadt aan om Databricks Runtime 16.3 en hoger te gebruiken voor alle DROP FEATURE opdrachten, waardoor het verouderde gedrag wordt vervangen. Zie Drop Delta-tabelfuncties (verouderd) voor documentatie over de verouderde functionaliteit.

Een Delta Lake-functie verwijderen

Important

Alle DROP FEATURE bewerkingen conflicteren met alle gelijktijdige schrijfbewerkingen.

Streaming-leesbewerkingen mislukken wanneer ze een doorvoer tegenkomen die metagegevens van de tabel wijzigt. U moet betrokken streams opnieuw opstarten. Zie voor aanbevolen methoden Productieoverwegingen voor Gestructureerde Streaming.

U moet Databricks Runtime 16.3 of hoger gebruiken en bevoegdheden hebben MODIFY voor de Delta Lake-doeltabel. U kunt slechts één tabelfunctie met elke DROP FEATURE opdracht neerzetten.

Als u een tabelfunctie wilt verwijderen, gebruikt u de volgende syntaxis:

ALTER TABLE <table-name> DROP FEATURE <feature-name>

Zie ALTER TABLE voor meer informatie.

Gedrag

Wanneer u een tabelfunctie verwijdert, voert Delta Lake de volgende wijzigingen in de tabel atomisch door:

  • Schakel tabeleigenschappen uit die gebruikmaken van de tabelfunctie.
  • Herschrijf de onderliggende gegevensbestanden indien nodig om alle traceringen van de tabelfunctie te verwijderen uit de huidige tabelversie.
  • Maak een set beveiligde controlepunten waarmee lezersclients de tabelgeschiedenis correct kunnen lezen.
  • Voeg de schrijverstabel-functie checkpointProtection toe aan het tabelprotocol.
  • Downgrade het tabelprotocol naar de laagste lezer- en schrijfversies die ondersteuning bieden voor alle overige tabelfuncties. Zie het laagste mogelijke protocol.

De checkpointProtection tabelfunctie

Wanneer u een functie verwijdert, herschrijft Delta Lake gegevens en metagegevens in de geschiedenis van de tabel als beveiligde controlepunten om de downgrade van het protocol te respecteren.

Na de downgrade heeft de tabel geen clients nodig om de verwijderde functie te ondersteunen. De beveiligde controlepunten en de checkpointProtection functie bereiken het volgende:

  • Lezerclients die ondersteuning bieden voor de verwijderde tabelfunctie kunnen alle beschikbare tabelgeschiedenisversies lezen.
  • Lezerclients die geen ondersteuning bieden voor de verwijderde functie, kunnen tabelgeschiedenisversies lezen uit de downgradeversie van het protocol.
  • Schrijfclients wijzigen geen controlepunten die zijn gemaakt vóór de downgrade van het protocol.
  • checkpointProtection markeert protocol downgrade controlepunten als beveiligd, en tabelonderhoudsbewerkingen respecteren deze markeringen.

Hoewel u slechts één tabelfunctie met elke DROP FEATURE opdracht kunt neerzetten, kan een tabel meerdere beveiligde controlepunten en verwijderde functies in de tabelgeschiedenis hebben.

Alle Databricks Runtime-versies ondersteunen de checkpointProtection tabelfunctie, wat betekent dat met deze tabelfunctie geen lees- of schrijfbewerkingen op Azure Databricks worden geblokkeerd.

checkpointProtection blokkeert geen alleen-lezentoegang van OSS Delta Lake-clients. Als u de tabel volledig wilt downgraden en de checkpointProtection tabelfunctie wilt verwijderen, moet u deze gebruiken TRUNCATE HISTORY. Databricks raadt u aan dit patroon alleen te gebruiken als u naar tabellen moet schrijven met externe Delta-clients die geen ondersteuning bieden checkpointProtection. Zie Tabelprotocollen volledig downgraden voor verouderde clients.

Ondersteunde tabelfuncties

U kunt de volgende Delta Lake-tabelfuncties verwijderen:

U kunt geen andere Delta Lake-tabelfuncties verwijderen.

Important

Databricks raadt u aan om altijd afhankelijke workloads en systemen te testen op compatibiliteit met nieuwe functies voordat u functies inschakelt waarmee lezer- of schrijfprotocollen voor productiegegevens worden bijgewerkt.

Houd rekening met het volgende:

  • Door kolomtoewijzing uit een tabel te verwijderen, worden de willekeurige voorvoegsels die worden gebruikt in mapnamen voor gepartitioneerde tabellen niet verwijderd. Zie Delen Delta Lake en Parquet partitioneringsstrategieën?.
  • Sommige Delta Lake-functies maken meerdere tabelfuncties mogelijk die afhankelijk zijn van elkaar, waardoor u mogelijk geen afhankelijke functies kunt verwijderen. U kunt geen functies terugdraaien die niet kunnen worden verwijderd.

Tabelprotocollen volledig verlagen voor verouderde clients

Als u externe Delta Lake-clients gebruikt met schrijfbewerkingen die de checkpointProtection tabelfunctie niet ondersteunen, moet u het TRUNCATE HISTORY tabelprotocol volledig downgraden en alle traceringen van de verwijderde tabelfuncties verwijderen. Als u de bewerking uitvoert TRUNCATE HISTORY , wordt alle tabelgeschiedenis verwijderd die ouder is dan 24 uur.

Databricks raadt aan het standaardgedrag voor DROP FEATURE te testen voordat TRUNCATE HISTORY wordt uitgevoerd.

Voor de volledige downgrade zijn twee stappen vereist, ten minste 24 uur na elkaar.

Stap 1: Een tabelfunctie verwijderen voorbereiden

Voer de ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY opdracht uit. De opdracht past het volgende toe:

  • Hiermee worden tabeleigenschappen bijgewerkt om de functie uit te schakelen.
  • Hiermee stelt u de bijbehorende tabeleigenschappen voor de functie opnieuw in op de standaardwaarden.
  • Herschrijf zo nodig gegevens- en metagegevensbestanden om de bijgewerkte eigenschappen weer te geven.
  • Retourneert een bericht dat u minimaal 24 uur moet wachten voordat u het opnieuw uitvoert om de protocol downgrade te voltooien.

Nadat u een functie hebt uitgeschakeld, kunt u doorgaan met schrijven naar de doeltabel voordat u de protocol downgrade voltooit, maar u kunt de tabelfunctie die u verwijdert niet gebruiken.

Note

Als u de tabel in deze status laat staan, gebruiken bewerkingen voor de tabel niet de tabelfunctie, maar ondersteunt het protocol nog steeds de tabelfunctie. Totdat u de laatste downgradestap hebt voltooid, kan de tabel niet worden gelezen door Delta-clients die de tabelfunctie niet ondersteunen.

Stap 2: Het protocol downgraden en een tabelfunctie verwijderen

Voer na minstens 24 uur de ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY opdracht opnieuw uit. De opdracht past het volgende toe:

  • Hiermee wordt de tabelgeschiedenis afgekapt tot de bewaardrempel.
  • Bevestigt dat de functie geen resterende transacties gebruikt.
  • Hiermee wordt de functie verwijderd en wordt het tabelprotocol gedowngraded naar de laagste versie die ondersteuning biedt voor de resterende functies.

Important

Als u de uitvoering uitvoert ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY , worden alle transactielogboekgegevens verwijderd die ouder zijn dan 24 uur. Nadat u deze opdracht hebt gebruikt om het tabelprotocol te downgraden, hebt u geen toegang tot de tabelgeschiedenis of het tijdreizen.

Bekijk de compatibiliteit en protocollen van Delta Lake-functies.