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:
-
checkConstraints
. Zobacz Ograniczenia dotyczące usługi Azure Databricks. -
collations-preview
. Zobacz Obsługa sortowania dla usługi Delta Lake. -
columnMapping
. Zobacz Zmień nazwę i usuń kolumny za pomocą mapowania kolumn Delta Lake. -
deletionVectors
. Zobacz Co to są wektory usuwania?. -
typeWidening-preview
. Zobacz Rozszerzanie typu. -
v2Checkpoint
. Zobacz Zgodność tabel z klastrowaniem płynnym.
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:
- Użytkownik uruchamia
DROP FEATURE
polecenie . - Właściwości tabeli, które umożliwiają jakąś funkcję tabeli, mają ustawione wartości, które ją wyłączają.
- Właściwości tabeli kontrolujące zachowania skojarzone z porzuconą funkcją mają opcje ustawione na wartości domyślne przed wprowadzeniem funkcji.
- W razie potrzeby pliki danych i metadanych zostaną przepisane z uwzględnieniem zaktualizowanych właściwości tabeli.
- 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.
- Po upływie co najmniej 24 godzin użytkownik ponownie wykona
DROP FEATURE
polecenie z klauzuląTRUNCATE HISTORY
. - 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.
- Protokół jest obniżany, upuszczając funkcję tabeli.
- Jeśli funkcje tabeli, które znajdują się w tabeli, mogą być reprezentowane przez starszą wersję protokołu,
minReaderVersion
iminWriterVersion
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?.