Odstranění funkce tabulky Delta Lake a degradace protokolu tabulky

V Databricks Runtime 16.4 LTS a novějším DROP FEATURE odebere funkci tabulky v Delta Lake a sníží protokol tabulky na nejnižší verzi, která podporuje zbývající funkce. Tuto možnost použijte pouze k obnovení kompatibility se staršími verzemi Databricks Runtime, openSharingem nebo externími klienty Delta Lake.

Ne všechny funkce je možné vynechat. Viz Podporované funkce tabulek.

Note

Podpora pro starší verze DROP FEATURE je dostupná od Databricks Runtime 14.3 LTS. Databricks doporučuje používat Databricks Runtime 16.3 a vyšší pro všechny DROP FEATURE příkazy, které nahrazují starší chování. Dokumentaci ke starším funkcím najdete v tématu Funkce tabulky Drop Delta (starší verze).

Vyřazení funkce Delta Lake

Important

Všechny DROP FEATURE operace jsou v konfliktu se všemi souběžnými zápisy.

Streamové čtení selže, pokud narazí na potvrzení, které změní metadata tabulky. Musíte restartovat ovlivněné streamy. Doporučené metody najdete v tématu Důležité informace o produkčním prostředí pro strukturované streamování.

Musíte používat Databricks Runtime 16.3 nebo novější a mít oprávnění MODIFY k cílové tabulce Delta Lake. S každým DROP FEATURE příkazem můžete odstranit jenom jednu funkci tabulky.

Pokud chcete zrušit funkci tabulky, použijte následující syntaxi:

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

Další podrobnosti najdete v ALTER TABLE.

Behavior

Když funkci tabulky zahodíte, Delta Lake v tabulce atomicky potvrdí následující změny:

  • Vypněte vlastnosti tabulky, které používají funkci tabulky.
  • Podle potřeby přepište podkladové soubory s daty tak, aby se z aktuální verze tabulky odstranily všechny stopy funkce tabulek.
  • Vytvořte sadu chráněných kontrolních bodů, které klientům čtenáře umožňují správně číst historii tabulek.
  • Přidejte funkci checkpointProtection zapisovací tabulky do protokolu tabulky.
  • Downgradujte protokol tabulky na nejnižší verze čtečky a zápisu, které podporují všechny zbývající funkce tabulky. Viz Nejnižší možný protokol.

Funkce checkpointProtection tabulky

Když vynecháte funkci, Delta Lake při dodržení downgradu protokolu přepíše data a metadata v historii tabulky jako chráněné kontrolní body.

Po downgradu tabulka nevyžaduje, aby klienti podporovali vyřazenou funkci. Chráněné kontrolní body a checkpointProtection prvek dosahují následující:

  • Klienti čtenáře, kteří podporují funkci vyřazené tabulky, mohou číst všechny dostupné verze historie tabulek.
  • Klienti pro čtení, kteří nepodporují odebranou funkci, mohou číst verze historie tabulky od verze protokolu po downgrade dále.
  • Klienti pro zápis neupravují kontrolní body vytvořené před snížením verze protokolu.
  • checkpointProtection označí kontrolní body pro snížení verze protokolu jako chráněné a operace údržby tabulek tato označení respektují.

I když můžete s každým DROP FEATURE příkazem vyhodit jenom jednu funkci tabulky, může mít tabulka v historii tabulek více chráněných kontrolních bodů a vyřazených funkcí.

Všechny verze Modulu runtime Databricks podporují checkpointProtection funkci tabulky, což znamená, že tato funkce tabulky neblokuje čtení ani zápisy na Azure Databricks.

checkpointProtection neblokuje přístup pouze pro čtení klientům OSS Delta Lake. K úplnému snížení úrovně tabulky a odebrání této checkpointProtection funkce tabulky je nutné použít TRUNCATE HISTORY. Databricks doporučuje používat tento vzor pouze v případě, že potřebujete zapisovat do tabulek s externími klienty Delta, kteří nepodporují checkpointProtection. Podívejte se na Protokoly tabulek plně degradované pro starší verze klientů.

Podporované funkce tabulek

Můžete vynechat následující funkce tabulky Delta Lake:

Jiné funkce tabulky Delta Lake nelze odstranit.

Important

Databricks doporučuje vždy testovat závislé úlohy a systémy kvůli kompatibilitě s novými funkcemi před povolením funkcí, které upgradují protokoly čtenáře nebo zapisovače pro produkční data.

Vezměte v úvahu následující skutečnosti:

  • Vyřazení mapování sloupců z tabulky neodebere náhodné předpony použité v názvech adresářů pro dělené tabulky. Podívejte se na zda Delta Lake a Parquet sdílejí strategie dělení na oddíly.
  • Některé funkce Delta Lake umožňují více funkcí tabulek, které na sobě závisejí, což může bránit vyřazení závislých funkcí. Nemůžete vrátit zpět funkce, které se nedají vynechat.

Provést úplný downgrade protokolů pro zastaralé klienty

Pokud používáte externí klienty Delta Lake pro zápis, kteří nepodporují funkci tabulky checkpointProtection, musíte použít TRUNCATE HISTORY k úplnému snížení verze protokolu tabulky a odstranění veškerých stop po odebraných funkcích tabulky. Spuštění TRUNCATE HISTORY odstraní veškerou historii tabulek starší než 24 hodin.

Databricks doporučuje otestovat výchozí chování pro DROP FEATURE před spuštěním TRUNCATE HISTORY.

Úplné downgrade vyžaduje dva kroky, nejméně 24 hodin od sebe.

Krok 1: Příprava na vyřazení funkce tabulky

Spusťte příkaz ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY. Příkaz použije následující:

  • Aktualizuje vlastnosti tabulky, aby se tato funkce vypnula.
  • Obnoví vlastnosti přidružené tabulky pro funkci na výchozí hodnoty.
  • Podle potřeby přepisuje data a soubory metadat tak, aby odrážely aktualizované vlastnosti.
  • Vrátí zprávu, že před jeho opětovným spuštěním musíte počkat alespoň 24 hodin, abyste dokončili snížení verze protokolu.

Po vypnutí funkce můžete pokračovat v zápisu do cílové tabulky před dokončením downgradu protokolu, ale nemůžete použít funkci tabulky, kterou odebíráte.

Note

Pokud necháte tabulku v tomto stavu, operace s tabulkou nepoužívají funkci tabulky, ale protokol stále podporuje funkci tabulky. Dokud nedokončíte poslední krok downgradu, nebudou ji moct přečíst klienti Delta, kteří funkci tabulky nepodporují.

Krok 2: Downgrade protokolu a vyřazení funkce tabulky

Po alespoň 24 hodinách spusťte ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY příkaz znovu. Příkaz použije následující:

  • Zkrátí historii tabulek na prahovou hodnotu uchovávání informací.
  • Potvrdí, že tuto funkci nepoužívají žádné zbývající transakce.
  • Zahodí funkci a downgraduje protokol tabulky na nejnižší verzi, která podporuje zbývající funkce.

Important

Spuštění ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY odebere všechna data transakčního protokolu starší než 24 hodin. Po použití tohoto příkazu k downgradu tabulkového protokolu nemáte přístup k historii tabulek ani k časovému cestování.

Viz kompatibilita a protokoly funkcí Delta Lake.