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

Tento článek popisuje, jak zrušit funkce tabulek Delta Lake a snížit verze protokolu.

Tato funkce je dostupná ve službě Databricks Runtime 16.3 a vyšší. Ne všechny funkce tabulky Delta je možné vynechat. Podívejte se , jaké funkce tabulek Delta je možné vynechat?

Měli byste použít DROP FEATURE pouze k podpoře kompatibility se staršími verzemi modulu Databricks Runtime, Delta Sharing nebo externími klienty pro čtení a zápis Delta Lake.

Poznámka:

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

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

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

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

Další podrobnosti najdete v ALTER TABLE.

Důležité

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. Pokud chcete, aby datový proud pokračoval, musíte ho restartovat. Doporučené metody najdete v tématu Důležité informace o produkčním prostředí pro strukturované streamování.

Co se stane, když dojde k vyřazení funkce tabulky?

Když funkci tabulky zahodíte, Delta Lake atomicky potvrdí změny v tabulce, aby bylo možné provést následující:

  • Zakažte vlastnosti tabulky, které používají funkci tabulky.
  • Podle potřeby přepište datové soubory, abyste z datových souborů podporujících tabulku v aktuální verzi odebrali všechny stopy funkce tabulky.
  • Vytvořte sadu chráněných kontrolních bodů, které klientům čtenáře umožňují správně interpretovat 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.

Co je checkpointProtection funkce 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 degradaci by měla být tabulka vždy čitelná větším počtem klientů čtenářů. Důvodem je to, že protokol tabulky teď odráží, že podpora vyřazené funkce už není nutná ke čtení tabulky. Chráněné kontrolní body a checkpointProtection prvek dosahují následující:

  • Klienti čtečky, kteří rozumějí funkci zrušené tabulky, mají přístup ke všem dostupným historiím tabulek.
  • Klienti čtenáře, kteří nepodporují funkci odstraněné tabulky, potřebují číst pouze historii tabulek počínaje verzí snížení protokolu.
  • Zapisovací klienti nepřepisují kontrolní body, než dojde ke snížení úrovně protokolu.
  • Operace údržby tabulek respektují požadavky stanovené checkpointProtection, které označují kontrolní body pro snížení úrovně protokolu jako chráněné.

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í funkci tabulky checkpointProtection, což znamená, že tato funkce tabulky neblokuje čtení ani zápisy v Azure Databricks.

Funkce checkpointProtection tabulky by neměla blokovat přístup jen pro čtení z klientů 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, které nepodporují checkpointProtection. Podívejte se na Protokoly tabulek plně degradované pro starší verze klientů.

Jaké funkce tabulek Delta je možné vynechat?

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

Jiné funkce tabulky Delta nelze odstranit.

Důležité

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í tabulky. Některé funkce tabulek závisí na jiných funkcích tabulky a můžou blokovat vyřazení závislých funkcí tabulky. Vzhledem k tomu, že některé funkce tabulky nelze vynechat, znamená to, že povolení některých funkcí Delta Lake se nedá vrátit zpět.

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.

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

Pokud integrace s externími klienty Delta Lake vyžadují zápisy, které nepodporují checkpointProtection funkci tabulky, musíte použít TRUNCATE HISTORY k úplnému odstranění všech stop zakázaných funkcí tabulky a ke snížení verze protokolu tabulky.

Databricks doporučuje otestovat výchozí chování pro DROP FEATURE předtím, než pokračujete s TRUNCATE HISTORY. Spuštění TRUNCATE HISTORY odebere veškerou historii tabulek starší než 24 hodin.

Úplné snížení tabulky probíhá ve dvou krocích, které musí proběhnout s minimálním odstupem 24 hodin.

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

Během první fáze se uživatel připraví k vyřazení funkce tabulky. Následující popis popisuje, co se stane v této fázi:

  1. Spustíte ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY příkaz.
  2. Vlastnosti tabulky, které konkrétně umožňují funkci tabulky, mají hodnoty nastavené tak, aby tuto funkci zakázaly.
  3. Vlastnosti tabulky, které řídí chování spojené s vyřazenou funkcí, mají možnosti nastavené na výchozí hodnoty před zavedením funkce.
  4. V případě potřeby se soubory dat a metadat přepíší s ohledem na aktualizované vlastnosti tabulky.
  5. Příkaz se dokončí a vrátí chybovou zprávu informující uživatele, že musí počkat 24 hodin, než bude pokračovat v odebrání funkce.

Po prvním zakázání 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.

Poznámka:

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 moct tabulka číst klienti Delta, kteří funkci tabulky nerozumí.

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

Pro úplné odstranění veškeré historie transakcí spojené s funkcí a downgrade protokolu:

  1. Po uplynutí alespoň 24 hodin spustíte ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY příkaz.
  2. Klient potvrdí, že v zadané prahové hodnotě uchovávání nejsou žádné transakce, použije funkci tabulky a pak zkrátí historii tabulek na tuto prahovou hodnotu.
  3. Funkce tabulky se během downgradu protokolu zahodí.
  4. Pokud můžou být funkce tabulky, které jsou v tabulce přítomny, reprezentovány nižší verzí protokolu, minReaderVersion a minWriterVersion u tabulky jsou downgradovány na nejnižší verzi, která podporuje zbývající funkce používané tabulkou Delta.

Důležité

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 ke snížení úrovně protokolu tabulky nemáte přístup k historii tabulky ani k funkci časového cestování.

Viz kompatibilita a protokoly funkcí Delta Lake.