Udostępnij za pośrednictwem


Usuń funkcje tabeli Delta

Ważne

Obsługa rezygnacji z funkcji tabeli Delta i obniżania wersji protokołu jest dostępna w publicznej wersji zapoznawczej w środowisku Databricks Runtime 14.1 lub nowszym.

Usługa Azure Databricks zapewnia ograniczoną obsługę usuwania funkcji tabeli. Aby usunąć funkcję tabeli, muszą wystąpić następujące elementy:

  • Wyłącz właściwości tabeli korzystające z funkcji tabeli.
  • Usuń wszystkie ślady funkcji tabeli z plików danych wspierających tabelę.
  • Usuń wpisy transakcji korzystające z funkcji tabeli z dziennika transakcji.
  • Obniżanie poziomu protokołu tabeli.

Gdzie to jest obsługiwane, należy używać tej funkcji tylko do obsługi zgodności z wcześniejszymi wersjami środowiska Databricks Runtime, Delta Sharing lub innymi klientami Delta Lake do odczytu lub zapisu.

Ważne

Wszystkie DROP FEATURE operacje powodują konflikt ze wszystkimi współbieżnymi zapisami.

Odczyty strumieniowe zawodzą przy napotkaniu zatwierdzenia, które zmienia metadane tabeli. Jeśli chcesz, aby strumień kontynuował, musisz uruchomić go ponownie. Aby zapoznać się z zalecanymi metodami, zobacz Zagadnienia dotyczące produkcji przesyłania strumieniowego ze strukturą.

Jak mogę usunąć funkcję tabeli delty?

Aby usunąć funkcję tabeli delty, uruchom polecenie ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY]. Zobacz ALTER TABLE.

Musisz użyć środowiska Databricks Runtime 14.1 lub nowszego i mieć uprawnienia MODIFY w docelowej tabeli Delta.

Jakie funkcje tabeli delty można porzucić?

Możesz usunąć następujące funkcje tabeli delty:

Nie można usunąć innych funkcji tabeli delty .

Włączanie funkcji tabeli w celu porzucania starszych funkcji

Polecenie DROP FEATURE wymaga wersji protokołu, które obsługują odczyty i zapisy funkcji tabeli. Funkcje różnicowe, takie jak columnMapping i checkConstraints , były obsługiwane we wcześniejszych wersjach protokołu. W zależności od innych funkcji włączonych w tabeli może być konieczne uaktualnienie wersji protokołu przed usunięciem tych funkcji.

Możesz użyć następującego polecenia, aby uaktualnić wersje czytnika i zapisywarki tabel, co umożliwia usunięcie mapowania kolumn i obniżenie poziomu protokołu:

ALTER TABLE <table-name> SET TBLPROPERTIES (
  'delta.minReaderVersion' = '3',
  'delta.minWriterVersion' = '7'
)

W jaki sposób funkcje tabeli delty zostały porzucone?

Ponieważ funkcje tabeli Delta reprezentują protokoły czytelników i zapisujących, muszą być całkowicie nieobecne w dzienniku transakcji, aby umożliwić pełne usunięcie. Porzucanie funkcji występuje w dwóch etapach i wymaga czasu, który upłynął przed ukończeniem. Szczegóły usuwania funkcji różnią się w zależności od funkcji, ale poniższa sekcja zawiera ogólne omówienie.

Przygotowanie do porzucania funkcji tabeli

Podczas pierwszego etapu użytkownik przygotowuje się do porzucenia funkcji tabeli. Poniżej opisano, co dzieje się na tym etapie:

  1. Użytkownik uruchamia DROP FEATURE polecenie .
  2. Właściwości tabeli, które umożliwiają jakąś funkcję tabeli, mają ustawione wartości, które ją wyłączają.
  3. Właściwości tabeli kontrolujące zachowania skojarzone z porzuconą funkcją mają opcje ustawione na wartości domyślne przed wprowadzeniem funkcji.
  4. W razie potrzeby pliki danych i metadanych zostaną przepisane z uwzględnieniem zaktualizowanych właściwości tabeli.
  5. Polecenie kończy działanie i zwraca komunikat o błędzie informujący użytkownika, że musi poczekać 24 godziny, aby kontynuować usuwanie funkcji.

Po pierwszym wyłączeniu funkcji możesz kontynuować zapisywanie w tabeli docelowej przed ukończeniem obniżania poziomu protokołu, ale nie można użyć funkcji tabeli, którą usuwasz.

Uwaga

Jeśli pozostawisz tabelę w tym stanie, operacje względem tabeli nie używają funkcji tabeli, ale protokół nadal obsługuje funkcję tabeli. Dopóki nie ukończysz ostatniego kroku obniżania poziomu, tabela nie będzie czytelna dla klientów Delta, którym obce jest funkcjonowanie tabeli.

Obniżanie poziomu protokołu i usuwanie funkcji tabeli

Aby usunąć funkcję tabeli, należy usunąć całą historię transakcji skojarzoną z funkcją i obniżyć wersję protokołu.

  1. Po upływie co najmniej 24 godzin użytkownik ponownie wykona DROP FEATURE polecenie z klauzulą TRUNCATE HISTORY .
  2. Klient potwierdza, że żadna transakcja w określonym progu przechowywania nie używa funkcji tabeli, a następnie obcina historię tabeli do tej wartości.
  3. Protokół jest obniżany, upuszczając funkcję tabeli.
  4. Jeśli funkcje tabeli, które znajdują się w tabeli, mogą być reprezentowane przez starszą wersję protokołu, minReaderVersion i minWriterVersion dla tabeli zostaną obniżone do najniższej wersji, która obsługuje dokładnie wszystkie pozostałe funkcje używane przez tabelę delta.

Ważne

Uruchomienie ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY spowoduje usunięcie wszystkich danych dziennika transakcji starszych niż 24 godziny. Po usunięciu funkcji tabeli delty nie masz dostępu do historii tabel ani podróży w czasie.

Zobacz artykuł Jak usługa Azure Databricks zarządza zgodnością funkcji usługi Delta Lake?.