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-preview
i 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
.