Udostępnij za pośrednictwem


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 Delta Lake, przestrzegają protokołów używanych w Delta Lake (OSS) w celu zapewnienia zgodności.

Wiele optymalizacji usługi Azure Databricks wymaga włączenia funkcji usługi Delta Lake w tabeli. Funkcje usługi Delta Lake są zawsze w pełni kompatybilne wstecz, więc tabele utworzone przez niższą wersję środowiska Databricks Runtime zawsze mogą być odczytywane i zapisywane przez wyższą wersję środowiska 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 przerywają zgodność z przyszłymi wersjami, należy zaktualizować wszystkie obciążenia odwołujące się do zaktualizowanych tabel, aby używać zgodnej wersji Databricks Runtime.

Uwaga

Możesz usunąć deletionVectors, v2Checkpoint, columnMapping, typeWidening-previewi collations-preview w usłudze Azure Databricks. Zobacz funkcje tabeli Drop Delta .

Ważne

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

Odczyty strumieniowe kończą się niepowodzeniem, gdy napotkają operację zatwierdzenia zmieniającą 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ą aktywowane oddzielnie dla każdej tabeli. 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żyj funkcji śledzenia zmian danych Delta Lake w usłudze Azure Databricks
Wygenerowane kolumny Databricks Runtime 9.1 LTS kolumny generowane przez Delta Lake
Mapowanie kolumn Databricks Runtime 10.4 LTS Zmiana nazw i usuwanie kolumn z użyciem mapowania kolumn Delta Lake
Kolumny identyfikacyjne Databricks Runtime 10.4 LTS Używanie kolumn tożsamości w Delta Lake
Funkcje tabeli Databricks Runtime 12.2 LTS Czym są funkcje tabeli?
Wektory usuwania Databricks Runtime 12.2 LTS Co to są wektory usuwania?
TimestampNTZ Databricks Runtime 13.3 LTS TIMESTAMP_NTZ typ
Mundur Databricks Runtime 13.3 LTS Odczytywanie tabel Delta za pomocą klientów Iceberg
Klastrowanie cieczy Databricks Runtime 13.3 LTS Używanie klastrowania płynnego dla tabel delty
Śledzenie wierszy Databricks Runtime 14.1 Używanie śledzenia wierszy dla tabel delty
Rozszerzanie typu Databricks Runtime 15.2 Rozszerzanie typu
Wariant Databricks Runtime 15.3 Obsługa wariantów w usłudze Delta Lake
Sortowania Databricks Runtime 16.1 Obsługa sortowania w Delta Lake

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

Uwaga

DLT i Databricks SQL automatycznie uaktualniają środowiska wykonawcze regularnymi wersjami, aby obsługiwać nowe funkcje. Zobacz informacje o wersji DLT oraz proces uaktualniania wersji i informacje o wersjiDatabricks SQL.

Czym 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ć problemy z odczytem lub zapisem istniejących tabel Delta Lake albo obu tych operacji. 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ż sprawdzić i upewnić się, że wszystkie bieżące i przyszłe narzędzia produkcyjne obsługują tabele Delta Lake z nową wersją protokołu.

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

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ą do tabeli Delta, muszą mieć możliwość utworzenia migawki tabeli. W związku z tym obciążenia zapisujące do tabel Delta muszą przestrzegać zarówno wymagań protokołu czytnika, jak i protokołu pisania.

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 aplikacje zapisujące muszą znać CHECK ograniczenia 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. Databricks nie zaleca zmiany właściwości tabeli minReaderVersion 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 funkcje tabeli Drop Delta .

Czym są funkcje tabeli?

W środowisku Databricks Runtime 12.2 LTS i nowszych funkcjach tabeli usługi Delta Lake wprowadzono szczegółowe flagi określające, które funkcje są obsługiwane przez daną tabelę. W środowisku Databricks Runtime 11.3 LTS i poniżej funkcje usługi Delta Lake zostały włączone w pakietach zwanych 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, sprawdź 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 Delta uaktualnionych do funkcjonalności tabeli we wszystkich wersjach LTS 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 Delta Lake dla wersji zapisu 7 i wersji czytnika 3. Usługa Azure Databricks przeportowała kod wstecznie do wszystkich wspieranych wersji Databricks Runtime LTS, aby dodać wsparcie dla funkcji tabel, ale tylko dla tych funkcji, które są już obsługiwane w tej wersji 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 11.3 LTS i poniżej nie można włączyć funkcji tabeli osobno. Wersje protokołu łączą grupę funkcji.

Tabele Delta rozgraniczają oddzielną wersję protokołu dla protokołu odczytu i protokołu zapisu. Dziennik transakcji dla tabeli Delta zawiera informacje dotyczące wersjonowania protokołu, które obsługują ewolucję Delta Lake. Sprawdź szczegóły tabeli Delta Lake za pomocą polecenia 'describe detail'.

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

Uwaga

Począwszy od wersji 7 dla pisarza i wersji 3 dla czytelnika, 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?). Delta Sharing obsługuje tylko odczytywanie tabel z funkcjami, które wymagają minReaderVersion = 1.

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 4 1 Używanie strumienia danych zmian Delta Lake na platformie Azure Databricks
Wygenerowane kolumny 4 1 kolumn wygenerowanych przez usługę Delta Lake
Mapowanie kolumn 5 2 Zmiana nazw i usuwanie kolumn z użyciem mapowania kolumn Delta Lake
Kolumny identyfikacyjne 6 2 Stosowanie kolumn tożsamości w usłudze Delta Lake
Funkcje tabeli odczytane 7 1 Czym są funkcje tabeli?
Funkcje pisania tabeli 7 3 Czym są funkcje tabeli?
Śledzenie wierszy 7 1 Używanie śledzenia wierszy dla tabel delty
Wektory usuwania 7 3 Co to są wektory usuwania?
TimestampNTZ 7 3 TIMESTAMP_NTZ typ
Klastrowanie cieczy 7 3 Używanie klastrowania płynnego dla tabel delty
Mundur 7 2 Odczytywanie tabel Delta za pomocą klientów Iceberg
Rozszerzanie typu 7 3 Rozszerzanie typu
Wariant 7 3 Obsługa wariantów w Delta Lake
Sortowania 7 3 Obsługa sortowania w Delta Lake