Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób porzucania funkcji tabel usługi Delta Lake i obniżania wersji protokołu.
Ta funkcja jest dostępna w środowisku Databricks Runtime 16.3 lub nowszym. Nie wszystkie funkcje tabeli delty można porzucić. Zobacz Jakie funkcje tabeli delty można porzucić?
Należy tylko używać DROP FEATURE
do obsługi zgodności z wcześniejszymi wersjami środowiska Databricks Runtime, Delta Sharing, lub zewnętrznymi klientami odczytu lub zapisu usługi Delta Lake.
Uwaga
Wsparcie dla starszej wersji jest dostępne od środowiska Databricks Runtime 14.3 LTS. Databricks zaleca używanie środowiska Databricks Runtime 16.3 lub nowszego dla wszystkich poleceń DROP FEATURE
, co zastępuje dotychczasowy sposób działania. Aby uzyskać dokumentację starszej funkcjonalności, zobacz Funkcje usuwania tabeli Delta (starsza wersja).
Usuwanie funkcji usługi Delta Lake
Aby usunąć funkcję tabeli, użyj następującej składni:
ALTER TABLE <table-name> DROP FEATURE <feature-name>
Musisz użyć Databricks Runtime 16.3 lub nowszego i mieć MODIFY
uprawnienia do docelowej tabeli Delty. Przy użyciu każdego DROP FEATURE
polecenia można usunąć tylko jedną funkcję tabeli.
Aby uzyskać więcej informacji, zobacz ALTER TABLE.
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 dla Przesyłania Strumieniowego ze Strukturyzowaniem.
Co się stanie, gdy funkcja tabeli zostanie porzucona?
Gdy usuniesz funkcję tabeli, Delta Lake niepodzielnie zatwierdza zmiany w tabeli w celu wykonania następujących czynności:
- Wyłącz właściwości tabeli korzystające z funkcji tabeli.
- Zapisz ponownie pliki danych w razie potrzeby, aby usunąć wszystkie ślady funkcji tabeli z plików danych wspierających tabelę w bieżącej wersji.
- Utwórz zestaw chronionych punktów kontrolnych, które umożliwiają klientom czytelników poprawne interpretowanie historii tabel.
- Dodaj funkcję
checkpointProtection
tabeli zapisywania do protokołu tabeli. - Obniż protokół tabeli do najniższych wersji odczytu i zapisu, które obsługują wszystkie pozostałe funkcje tabeli. Zobacz Najniższy możliwy protokół.
Jaka jest checkpointProtection
funkcja tabeli?
Po usunięciu funkcji Delta Lake odtwarza dane i metadane w historii tabeli, tworząc chronione punkty kontrolne, aby uwzględnić obniżenie wersji protokołu. Po obniżeniu poziomu tabela powinna być zawsze czytelna dla większej liczby klientów czytających. Dzieje się tak, ponieważ protokół tabeli odzwierciedla teraz, że obsługa porzuconej funkcji nie jest już wymagana do odczytania tabeli. Chronione punkty kontrolne i checkpointProtection
funkcja wykonuje następujące czynności:
- Aplikacje czytników, które rozumieją funkcję usuniętej tabeli, mogą uzyskać dostęp do całej dostępnej historii tabel.
- Klienci czytników, którzy nie obsługują funkcji usuwania tabeli, muszą odczytywać historię tabel, począwszy tylko od wersji obniżonego protokołu.
- Klienci piszący nie przepisują punktów kontrolnych przed obniżeniem poziomu protokołu.
- Operacje konserwacji tabeli spełniają wymagania określone przez
checkpointProtection
, który oznacza punkty kontrolne obniżania poziomu protokołu jako chronione.
Chociaż można usunąć tylko jedną funkcję tabeli z każdym DROP FEATURE
poleceniem, tabela może mieć wiele chronionych punktów kontrolnych i porzuconych funkcji w historii tabeli.
Wszystkie wersje środowiska Databricks Runtime obsługują checkpointProtection
funkcję tabeli, co oznacza, że ta funkcja tabeli nie blokuje odczytów ani zapisów w usłudze Azure Databricks.
Funkcja checkpointProtection
tabeli nie powinna blokować dostępu tylko do odczytu przez klientów OSS Delta Lake. Aby całkowicie przeprowadzić degradację tabeli i usunąć funkcję checkpointProtection
tabeli, należy użyć TRUNCATE HISTORY
. Usługa Databricks zaleca używanie tego wzorca tylko wtedy, gdy trzeba zapisywać dane w tabelach z zewnętrznymi klientami Delta, które nie obsługują checkpointProtection
. Zobacz Pełne obniżenie protokołów tabel dla klientów z systemami typu legacy.
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 Delta Lake. -
columnMapping
. Zobacz Zmienianie nazwy i usuwanie kolumn za pomocą mapowania kolumn Delta Lake. -
deletionVectors
. Zobacz Co to są wektory usuwania?. -
typeWidening
. Sprawdź Rozszerzanie typu. -
v2Checkpoint
. Zobacz Zgodność tabel z klastrowaniem płynnym. -
checkpointProtection
. Zobacz Co to jestcheckpointProtection
funkcja tabeli?.
Nie można usunąć innych funkcji tabeli delty .
Ważne
Porzucanie mapowania kolumn z tabeli nie powoduje usunięcia losowych prefiksów używanych w nazwach katalogów dla tabel partycjonowanych. Zobacz , czy Delta Lake i Parquet współdzielą strategie partycjonowania?.
Niektóre funkcje usługi Delta Lake umożliwiają korzystanie z wielu funkcji tabel. Niektóre funkcje tabeli zależą od innych funkcji tabeli i mogą blokować usuwanie zależnych funkcji tabeli. Ponieważ nie można usunąć niektórych funkcji tabeli, oznacza to, że nie można wycofać włączenia niektórych funkcji usługi Delta Lake.
Usługa Databricks zaleca zawsze testowanie zależnych obciążeń i systemów pod kątem zgodności z nowymi funkcjami przed włączeniem funkcji uaktualniającej protokoły czytnika lub zapisywania dla danych produkcyjnych.
Całkowite obniżenie protokołów tabel dla starszych klientów
Jeśli integracja z zewnętrznymi klientami usługi Delta Lake wymaga zapisów, które nie obsługują checkpointProtection
funkcji tabeli, należy użyć polecenia TRUNCATE HISTORY
aby w pełni usunąć wszystkie ślady wyłączonych funkcji tabeli i w pełni obniżyć poziom protokołu tabeli.
Usługa Databricks zaleca przetestowanie domyślnego zachowania programu DROP FEATURE
przed kontynuowaniem pracy z usługą TRUNCATE HISTORY
. Uruchomienie TRUNCATE HISTORY
powoduje usunięcie całej historii tabeli większej niż 24 godziny.
Degradacja pełnej tabeli odbywa się w dwóch krokach, które muszą być przeprowadzone z odstępem co najmniej 24 godzin.
Krok 1. 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:
- Uruchamiasz polecenie
ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
. - 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.
Krok 2. Obniżanie poziomu protokołu i usuwanie funkcji tabeli
Aby całkowicie usunąć całą historię transakcji skojarzoną z funkcją i zdegradować protokół:
- Po upływie co najmniej 24 godzin uruchomisz
ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
polecenie . - Klient potwierdza, że żadne transakcje w określonym progu przechowywania nie używają funkcji tabeli, a następnie obcina historię tabeli do tego progu.
- Funkcja tabeli jest porzucana podczas obniżania poziomu protokołu.
- Jeśli funkcje tabeli, które znajdują się w tabeli, mogą być reprezentowane przez niższą wersję protokołu, wartości
minReaderVersion
iminWriterVersion
dla tabeli zostaną obniżone do najniższej wersji, która obsługuje pozostałe funkcje używane przez tabelę delty.
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 użyciu tego polecenia w celu obniżenia poziomu protokołu tabeli nie masz dostępu do historii tabel ani podróży w czasie.