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
, , v2Checkpoint
columnMapping
i typeWidening-preview
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.2 LTS | Co to 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 delty przy użyciu programu UniForm z klientami góry lodowej |
Klastrowanie liquid | Databricks Runtime 13.3 LTS | Używanie płynnego klastrowania 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 |
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.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, 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 11.3 LTS i poniżej nie można włączyć funkcji tabeli osobno. 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
= 1
funkcji .