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 usługi Delta Lake, przestrzegają protokołów używanych w usłudze Delta Lake systemu operacyjnego 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ść w przód, należy zaktualizować wszystkie obciążenia odwołujące się do uaktualnionych tabel, aby używać zgodnej wersji środowiska 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ą zatwierdzenie zmieniające 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łączane na zasadzie 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 Ustaw ograniczenie 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 kolumn wygenerowanych przez usługę 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 Stosowanie kolumn tożsamości w usłudze 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 typ TIMESTAMP_NTZ
Mundur Databricks Runtime 13.3 LTS Odczytywanie tabel Delta za pomocą klientów Iceberg
Klastrowanie liquid 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 dla usługi Delta Lake

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

Uwaga

Delta Live Tables i Databricks SQL automatycznie aktualizują środowiska uruchomieniowe dzięki regularnym wydaniom, aby obsługiwać nowe funkcje. Zobacz informacje o wersji Delta Live Tables oraz proces uaktualniania wersji i informacje o wersji Databricks 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ć przerwanie istniejących czytników i zapisujących tabel Delta Lake, 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ż 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, które zapisują w tabelach Delta, muszą uwzględniać zarówno wymagania dotyczące protokołu czytnika, jak i protokołu zapisu.

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 odradza zmianę 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 delty drop.

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 nowszych 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, 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 przeniosła wstecz kod do wszystkich wspieranych wersji środowiska Databricks Runtime LTS, aby dodać wsparcie dla funkcjonalności 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 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. Zobacz Przejrzyj szczegóły tabeli Delta Lake za pomocą instrukcji '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 Ustawić ograniczenie 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 generowane w Delta Lake
Mapowanie kolumn 5 2 Zmienianie nazwy i usuwanie kolumn przy użyciu mapowania kolumn Delta Lake
Kolumny identyfikacyjne 6 2 Użyj kolumn tożsamości w usłudze Delta Lake
Funkcje tabeli odczytane 7 1 Czym są funkcje tabeli?
Funkcje zapisu 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 typ TIMESTAMP_NTZ
Klastrowanie liquid 7 3 Używanie klastrowania płynnego dla tabel delty
Mundur 7 2 Odczytywanie tabel Delta z klientami Iceberg
Rozszerzanie typu 7 3 Rozszerzanie typu
Wariant 7 3 Obsługa wariantów w usłudze Delta Lake
Sortowania 7 3 Obsługa sortowania dla usługi Delta Lake