Delen via


Een Delta Lake-tabelfunctie verwijderen en tabelprotocol downgraden

In dit artikel wordt beschreven hoe u Delta Lake-tabelfuncties kunt laten vallen en de protocolversies kunt verlagen.

Deze functionaliteit is beschikbaar in Databricks Runtime 16.3 en hoger. Niet alle Delta-tabelfuncties kunnen worden verwijderd. Zie welke Delta-tabelfuncties kunnen worden verwijderd?

U moet DROP FEATURE alleen gebruiken om compatibiliteit met eerdere Databricks Runtime-versies, Delta Sharing, of externe Delta Lake-lezer- of schrijfclients te ondersteunen.

Notitie

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

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

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

U moet Databricks Runtime 16.3 of hoger gebruiken en MODIFY privileges hebben op de doel-Delta-tabel. U kunt slechts één tabelfunctie met elke DROP FEATURE opdracht neerzetten.

Zie ALTER TABLE voor meer informatie.

Belangrijk

Alle DROP FEATURE bewerkingen conflicteren met alle gelijktijdige schrijfbewerkingen.

Streaming-leesbewerkingen mislukken wanneer ze een doorvoer tegenkomen die metagegevens van de tabel wijzigt. Als u wilt dat de stream wordt voortgezet, moet u deze opnieuw starten. Zie voor aanbevolen methoden Productieoverwegingen voor Gestructureerde Streaming.

Wat gebeurt er wanneer een tabelfunctie wordt verwijderd?

Wanneer u een tabelfunctie neerlegt, worden in Delta Lake atomisch wijzigingen doorgevoerd in de tabel om het volgende te bereiken:

  • Schakel tabeleigenschappen uit die gebruikmaken van de tabelfunctie.
  • Herschrijf indien nodig gegevensbestanden om alle sporen van de tabelfunctie te verwijderen uit de gegevensbestanden die de tabel in de huidige versie ondersteunen.
  • Maak een set beveiligde controlepunten waarmee lezersclients de tabelgeschiedenis correct kunnen interpreteren.
  • 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.

Wat is 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 moet de tabel altijd leesbaar zijn voor meer lezerclients. Dit komt doordat het protocol voor de tabel nu aangeeft dat ondersteuning voor de verwijderde functie niet meer nodig is om de tabel te lezen. De beveiligde controlepunten en de checkpointProtection functie bereiken het volgende:

  • Lezerclients die inzicht hebben in de verwijderde tabelfunctie, hebben toegang tot alle beschikbare tabelgeschiedenis.
  • Lezerclients die de verwijderde tabelfunctie niet ondersteunen, hoeven alleen de tabelgeschiedenis te lezen vanaf de downgradeversie van het protocol.
  • Writer-clients herschrijven geen controlepunten vóór de protocol downgrade.
  • Tabelonderhoudsbewerkingen respecteren de vereisten die zijn ingesteld door checkpointProtection, waarmee protocol-downgradecontrolepunten als beveiligd worden gemarkeerd.

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.

De tabelfunctie checkpointProtection mag de alleen-lezentoegang van OSS Delta Lake-clients niet blokkeren. 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.

Welke Delta-tabelfuncties kunnen worden verwijderd?

U kunt de volgende Delta-tabelfuncties verwijderen:

U kunt geen andere Delta-tabelfuncties verwijderen.

Belangrijk

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-functionaliteit maakt meerdere tabelfuncties mogelijk. Sommige tabelfuncties zijn afhankelijk van andere tabelfuncties en kunnen het verwijderen van afhankelijke tabelfuncties blokkeren. Omdat sommige tabelfuncties niet kunnen worden verwijderd, betekent dit dat het inschakelen van sommige Delta Lake-functies niet kan worden teruggedraaid.

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

Tabelprotocollen volledig verlagen voor verouderde clients

Als voor integraties met externe Delta Lake-clients schrijfbewerkingen nodig zijn die de checkpointProtection tabelfunctie niet ondersteunen, moet u alle TRUNCATE HISTORY traceringen van de uitgeschakelde tabelfuncties volledig verwijderen en het tabelprotocol volledig downgraden.

Databricks raadt aan om het standaardgedrag te testen voordat u met DROP FEATURE doorgaat naar TRUNCATE HISTORY. Als u de bewerking uitvoert TRUNCATE HISTORY , worden alle tabelgeschiedenissen langer dan 24 uur verwijderd.

De volledige tabel downgrade vindt plaats in twee stappen die minstens 24 uur uit elkaar moeten liggen.

Stap 1: Een tabelfunctie verwijderen voorbereiden

Tijdens de eerste fase bereidt de gebruiker zich voor om de tabelfunctie te verwijderen. In het volgende wordt beschreven wat er gebeurt tijdens deze fase:

  1. U voert de ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY opdracht uit.
  2. Tabeleigenschappen die specifiek een tabelfunctie inschakelen, hebben waarden ingesteld om de functie uit te schakelen.
  3. Tabeleigenschappen die gedrag bepalen dat is gekoppeld aan de verwijderde functie, hebben opties ingesteld op standaardwaarden voordat de functie werd geïntroduceerd.
  4. Indien nodig worden gegevens- en metagegevensbestanden herschreven met inachtneming van de bijgewerkte tabeleigenschappen.
  5. De opdracht wordt uitgevoerd en retourneert een foutbericht met de mededeling dat de gebruiker 24 uur moet wachten om door te gaan met het verwijderen van functies.

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.

Notitie

Als u de tabel in deze status laat staan, gebruiken bewerkingen voor de tabel de tabelfunctie niet, 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 begrijpen.

Stap 2: Het protocol downgraden en een tabelfunctie verwijderen

Alle transactiegeschiedenis die aan de functie is gekoppeld, volledig verwijderen en het protocol downgraden:

  1. Nadat ten minste 24 uur is verstreken, voert u de ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY opdracht uit.
  2. De client bevestigt dat er geen transacties in de opgegeven bewaardrempel gebruikmaken van de tabelfunctie en vervolgens de tabelgeschiedenis afkapt tot die drempelwaarde.
  3. De tabelfunctie wordt verwijderd tijdens het downgraden van het protocol.
  4. Als de tabelfuncties die aanwezig zijn in de tabel kunnen worden vertegenwoordigd door een lagere protocolversie, worden de minReaderVersion en minWriterVersion voor de tabel gedowngraded naar de laagste versie die ondersteuning biedt voor de resterende functies die door de Delta-tabel worden gebruikt.

Belangrijk

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.