W jaki sposób usługa Azure Databricks zarządza zgodnością funkcji usługi Delta Lake?

Usługa Delta Lake to niezależny projekt open source w ramach zarządzania platformą Linux Foundation. Usługa Databricks wprowadza obsługę nowych funkcji i optymalizacji usługi Delta Lake opartych na usłudze Delta Lake w wersjach środowiska Databricks Runtime.

Optymalizacje usługi Azure Databricks, które korzystają z funkcji usługi Delta Lake, przestrzegają protokołów używanych w usłudze Delta Lake systemu operacyjnego w celu zapewnienia zgodności.

Wiele optymalizacji Azure Databricks wymaga włączenia funkcji Delta Lake w tabeli. Funkcje Delta Lake są zawsze kompatybilne wstecz, więc tabele zapisane przez niższą wersję środowiska uruchomieniowego Azure Databricks Runtime mogą być zawsze odczytywane i zapisywane przez wyższą wersję środowiska uruchomieniowego Azure Databricks Runtime. Włączenie niektórych funkcji powoduje zerwanie kompatybilności z obciążeniami działającymi w niższej wersji środowiska uruchomieniowego Azure Databricks Runtime. W przypadku funkcji, które powodują zerwanie kompatybilności, należy zaktualizować wszystkie obciążenia, które odwołują się do zaktualizowanych tabel, aby korzystały ze zgodnej wersji środowiska uruchomieniowego Azure Databricks Runtime.

Uwaga

Możesz usunąć deletionVectors usługę Azure Databricks i v2Checkpoint w usłudze Azure Databricks. Zobacz Usuwanie funkcji tabeli delty.

Ważne

Wszystkie operacje zmiany protokołu powodują konflikt ze wszystkimi współbieżnymi zapisami.

Operacje odczytu przesyłania strumieniowego kończą się niepowodzeniem, gdy napotkają zatwierdzenie, 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ą.

Jakie funkcje usługi Delta Lake wymagają uaktualnień środowiska Databricks Runtime?

Następujące funkcje usługi Delta Lake przerywają zgodność z usługą Delta Lake. Funkcje są włączone w oparciu o tabelę. W tej tabeli wymieniono najniższą wersję środowiska Databricks Runtime nadal obsługiwaną przez usługę Azure Databricks.

Funkcja Wymaga wersji środowiska Databricks Runtime lub nowszej Dokumentacja
CHECK Ograniczenia Databricks Runtime 9.1 LTS Ustawianie ograniczenia CHECK w usłudze Azure Databricks
Zmienianie źródła danych Databricks Runtime 9.1 LTS Używanie zestawienia danych zmian usługi Delta Lake w usłudze Azure Databricks
Wygenerowane kolumny Databricks Runtime 9.1 LTS Kolumny wygenerowane przez usługę Delta Lake
Mapowanie kolumn Databricks Runtime 10.4 LTS Zmienianie nazwy i usuwanie kolumn za pomocą mapowania kolumn usługi Delta Lake
Kolumny tożsamości Databricks Runtime 10.4 LTS Używanie kolumn tożsamości w usłudze Delta Lake
Włącz funkcje Databricks Runtime 12.1 (nieobsługiwane) Co to są funkcje tabeli?
Wektory usuwania Databricks Runtime 12.1 (nieobsługiwane) Co to są wektory usuwania?
TimestampNTZ Databricks Runtime 13.0 (nieobsługiwane) typ TIMESTAMP_NTZ
Jednolite Databricks Runtime 13.2 (nieobsługiwane) Format uniwersalny (UniForm) dla zgodności góry lodowej z tabelami delty
Klastrowanie liquid Databricks Runtime 13.3 LTS Używanie płynnego klastrowania dla tabel delty

Zobacz Databricks Runtime release notes versions and compatibility (Wersje i zgodność środowiska Databricks Runtime).

Uwaga

Delta Live Tables i Databricks SQL automatycznie uaktualnia środowiska uruchomieniowe z regularnymi wersjami, aby obsługiwać nowe funkcje. Zobacz Informacje o wersji usługi Delta Live Tables oraz informacje o wersji programu Databricks i informacje o wersji usługi Databricks SQL.

Co to jest specyfikacja protokołu tabeli?

Każda tabela delty ma specyfikację protokołu, która wskazuje zestaw funkcji, które obsługuje tabela. Specyfikacja protokołu jest używana przez aplikacje odczytujące lub zapisujące tabelę w celu określenia, czy mogą obsługiwać wszystkie funkcje obsługiwane przez tabelę. Jeśli aplikacja nie wie, jak obsługiwać funkcję, która jest wymieniona jako obsługiwana w protokole tabeli, ta aplikacja nie może odczytywać ani zapisywać tej tabeli.

Specyfikacja protokołu jest oddzielona od dwóch składników: protokołu odczytu i protokołu zapisu.

Ostrzeżenie

Większość uaktualnień wersji protokołu jest nieodwracalna, a uaktualnienie wersji protokołu może spowodować przerwanie istniejących czytników tabel usługi Delta Lake, składników zapisywania lub obu tych typów. Usługa Databricks zaleca uaktualnienie określonych tabel tylko wtedy, gdy jest to konieczne, na przykład w celu wyrażenia zgody na nowe funkcje w usłudze Delta Lake. Należy również upewnić się, że wszystkie bieżące i przyszłe narzędzia produkcyjne obsługują tabele usługi Delta Lake z nową wersją protokołu.

Dla niektórych funkcji są dostępne obniżanie poziomu protokołu. Zobacz Usuwanie funkcji tabeli delty.

Odczyt protokołu

Protokół odczytu zawiera listę wszystkich funkcji, które obsługuje tabela, i że aplikacja musi zrozumieć, aby poprawnie odczytać tabelę. Uaktualnienie protokołu odczytu tabeli wymaga, aby wszystkie aplikacje czytników obsługiwały dodane funkcje.

Ważne

Wszystkie aplikacje, które zapisują się w tabeli delty, muszą mieć możliwość utworzenia migawki tabeli. W związku z tym obciążenia, które zapisują w tabelach delty, muszą uwzględniać zarówno wymagania dotyczące protokołu czytnika, jak i modułu zapisywania.

Jeśli napotkasz protokół, który nie jest obsługiwany przez obciążenie w usłudze Azure Databricks, musisz przeprowadzić uaktualnienie do wyższego środowiska Databricks Runtime obsługującego ten protokół.

Protokół zapisu

Protokół zapisu zawiera listę wszystkich funkcji, które obsługuje tabela, i że aplikacja musi zrozumieć, aby poprawnie zapisać dane w tabeli. Uaktualnienie protokołu zapisu tabeli wymaga, aby wszystkie aplikacje zapisywania obsługiwały dodane funkcje. Nie ma to wpływu na aplikacje tylko do odczytu, chyba że protokół odczytu również zostanie uaktualniony.

Które protokoły muszą zostać uaktualnione?

Niektóre funkcje wymagają uaktualnienia zarówno protokołu odczytu, jak i protokołu zapisu. Inne funkcje wymagają tylko uaktualnienia protokołu zapisu.

Na przykład obsługa CHECK ograniczeń jest funkcją protokołu zapisu: tylko pisanie aplikacji musi wiedzieć o CHECK ograniczeniach i wymuszać je.

Natomiast mapowanie kolumn wymaga uaktualnienia protokołów odczytu i zapisu. Ponieważ dane są przechowywane inaczej w tabeli, aplikacje czytelników muszą zrozumieć mapowanie kolumn, aby mogły prawidłowo odczytywać dane.

Minimalna wersja czytnika i składnika zapisywania

Uwaga

Podczas włączania mapowania kolumn należy jawnie uaktualnić wersję protokołu tabeli.

Po włączeniu funkcji delta w tabeli protokół tabeli jest automatycznie uaktualniany. Usługa Databricks zaleca zmianę minReaderVersion właściwości tabeli i minWriterVersion . Zmiana tych właściwości tabeli nie uniemożliwia uaktualniania protokołu. Ustawienie tych wartości na niższą wartość nie powoduje obniżenia poziomu tabeli. Zobacz Usuwanie funkcji tabeli delty.

Co to są funkcje tabeli?

W środowisku Databricks Runtime 12.1 lub nowszym funkcje tabeli usługi Delta Lake przedstawiają szczegółowe flagi określające, które funkcje są obsługiwane przez daną tabelę. W środowisku Databricks Runtime 12.0 lub nowszym funkcje usługi Delta Lake zostały włączone w pakietach nazywanych wersjami protokołu. Funkcje tabel są następcą wersji protokołu i zostały zaprojektowane z myślą o lepszej elastyczności dla klientów odczytujących i zapisujących usługę Delta Lake. Zobacz Co to jest wersja protokołu?.

Uwaga

Funkcje tabel mają wymagania dotyczące wersji protokołu. Zobacz Funkcje według wersji protokołu.

Funkcja tabeli delty jest znacznikiem wskazującym, że tabela obsługuje określoną funkcję. Każda funkcja jest funkcją protokołu zapisu (co oznacza, że uaktualnia tylko protokół zapisu) lub funkcją protokołu odczytu/zapisu (co oznacza, że zarówno protokoły odczytu, jak i zapisu są uaktualniane w celu włączenia tej funkcji).

Aby dowiedzieć się więcej na temat obsługiwanych funkcji tabel w usłudze Delta Lake, zobacz protokół Delta Lake.

Czy funkcje tabeli zmieniają sposób włączania funkcji usługi Delta Lake?

Jeśli korzystasz tylko z tabel delty za pośrednictwem usługi Azure Databricks, możesz nadal śledzić obsługę funkcji usługi Delta Lake przy użyciu minimalnych wymagań środowiska Databricks Runtime. Usługa Azure Databricks obsługuje odczytywanie tabel delty uaktualnionych do funkcji tabeli we wszystkich wersjach LTS środowiska Databricks Runtime, o ile wszystkie funkcje używane przez tabelę są obsługiwane przez tę wersję.

W przypadku odczytu i zapisu z tabel delty przy użyciu innych systemów może być konieczne rozważenie wpływu funkcji tabeli na zgodność, ponieważ istnieje ryzyko, że system nie może zrozumieć uaktualnionych wersji protokołu.

Ważne

Funkcje tabel są wprowadzane do formatu usługi Delta Lake dla składnika zapisywania w wersji 7 i czytnika w wersji 3. Usługa Azure Databricks ma zaimportowany kod do wszystkich obsługiwanych wersji LTS środowiska Databricks Runtime w celu dodania obsługi funkcji tabel, ale tylko dla tych funkcji, które są już obsługiwane w tym środowisku Databricks Runtime. Oznacza to, że chociaż możesz wyrazić zgodę na używanie funkcji tabeli w celu włączenia wygenerowanych kolumn i nadal pracować z tymi tabelami w środowisku Databricks Runtime 9.1 LTS, tabele z włączonymi kolumnami tożsamości (co wymaga środowiska Databricks Runtime 10.4 LTS) nadal nie są obsługiwane w tym środowisku Databricks Runtime.

Co to jest wersja protokołu?

Wersja protokołu to numer protokołu, który wskazuje określone grupowanie funkcji tabeli. W środowisku Databricks Runtime 12.0 lub nowszym nie można indywidualnie włączyć funkcji tabeli. Wersje protokołu łączą grupę funkcji.

Tabele różnicowe określają oddzielną wersję protokołu dla protokołu odczytu i protokołu zapisu. Dziennik transakcji dla tabeli delty zawiera informacje dotyczące przechowywania wersji protokołu, które obsługują ewolucję usługi Delta Lake. Zobacz Przeglądanie szczegółów tabeli usługi Delta Lake z opisem.

Wersje protokołu łączą wszystkie funkcje z poprzednich protokołów. Zobacz Funkcje według wersji protokołu.

Uwaga

Począwszy od wersji zapisywania 7 i czytelnika w wersji 3, usługa Delta Lake wprowadziła koncepcję funkcji tabel. Korzystając z funkcji tabeli, można teraz włączyć tylko te funkcje, które są obsługiwane przez innych klientów w ekosystemie danych. Zobacz Co to są funkcje tabeli?.

Funkcje według wersji protokołu

W poniższej tabeli przedstawiono minimalne wersje protokołu wymagane dla funkcji usługi Delta Lake.

Uwaga

Jeśli interesuje Cię tylko zgodność środowiska Databricks Runtime, zobacz What Delta Lake features require Databricks Runtime upgrades? (Jakie funkcje usługi Delta Lake wymagają uaktualnień środowiska Databricks Runtime?). Udostępnianie różnicowe obsługuje tylko odczytywanie tabel z funkcjami wymagającymi minReaderVersion = 1funkcji .

Funkcja minWriterVersion minReaderVersion Dokumentacja
Podstawowe funkcje 2 1 Co to jest usługa Delta Lake?
CHECK Ograniczenia 3 1 Ustawianie ograniczenia CHECK w usłudze Azure Databricks
Zmienianie źródła danych 100 1 Używanie zestawienia danych zmian usługi Delta Lake w usłudze Azure Databricks
Wygenerowane kolumny 100 1 Kolumny wygenerowane przez usługę Delta Lake
Mapowanie kolumn 5 2 Zmienianie nazwy i usuwanie kolumn za pomocą mapowania kolumn usługi Delta Lake
Kolumny tożsamości 6 2 Używanie kolumn tożsamości w usłudze Delta Lake
Odczytywanie funkcji tabeli 7 1 Co to są funkcje tabeli?
Zapis funkcji tabeli 7 3 Co to są funkcje tabeli?
Wektory usuwania 7 3 Co to są wektory usuwania?
TimestampNTZ 7 3 typ TIMESTAMP_NTZ
Klastrowanie liquid 7 3 Używanie płynnego klastrowania dla tabel delty
Jednolite 7 2 Format uniwersalny (UniForm) dla zgodności góry lodowej z tabelami delty