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 table. Funkcje Delta Lake są zawsze zgodne z wcześniejszymi wersjami, więc tables zapisane w niższej wersji środowiska Databricks Runtime zawsze może być odczytane i zapisane w nowszej wersji tego środowiska. 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ą kompatybilność wsteczną, należy update wszystkich obciążeń odwołujących się do zaktualizowanego tables, tak aby używały zgodnej wersji środowiska Databricks Runtime.
Uwaga
Możesz usunąć deletionVectors
, v2Checkpoint
, columnMapping
, typeWidening-preview
i collations-preview
w usłudze Azure Databricks. Zobacz funkcje Drop Delta table.
Ważne
Wszystkie operacje zmiany protokołu powodują konflikt ze wszystkimi współbieżnymi zapisami.
Odczyty przesyłania strumieniowego kończą się niepowodzeniem, gdy napotkają komit, który zmienia table metadanych. 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 tablenatable. W tym table 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 | Set i CHECK constraint w 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 columns | Databricks Runtime 9.1 LTS | Delta Lake wygenerował columns |
mapowanie Column | Databricks Runtime 10.4 LTS | zmień nazwę i usuń columns za pomocą mapowania Delta Lake column |
Tożsamość columns | Databricks Runtime 10.4 LTS | Użyj tożsamości columns w Delta Lake |
funkcje Table | Databricks Runtime 12.2 LTS | Co to są funkcje table? |
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 | Odczyt Delta tables z klientami Iceberg |
Klastrowanie liquid | Databricks Runtime 13.3 LTS | Użyj płynnego klastrowania dla tables Delta |
Śledzenie wierszy | Databricks Runtime 14.1 | Używaj śledzenia wierszy dla Delta tables |
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 uaktualniają środowiska uruchomieniowe dzięki regularnym aktualizacjom, aby obsługiwać nowe funkcje. Zobacz informacje o wersji Delta Live Tables oraz proces uaktualniania wersji i informacje o wersji Databricks SQL.
Co to jest specyfikacja protokołu table?
Dla każdej Delty table istnieje specyfikacja protokołu, która określa set funkcji obsługiwanych przez table. Specyfikacja protokołu jest używana przez aplikacje odczytujące lub zapisujące table w celu określenia, czy mogą obsługiwać wszystkie funkcje obsługiwane przez table. Jeśli aplikacja nie wie, jak obsługiwać funkcję wymienioną jako obsługiwaną w protokole table, ta aplikacja nie może odczytywać ani zapisywać tej funkcji table.
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 funkcji czytania, pisania lub obu w usłudze Delta Lake table. Databricks zaleca uaktualnianie określonych tables tylko wtedy, gdy jest to konieczne, na przykład aby skorzystać z nowych funkcji w Delta Lake. Należy również upewnić się, że wszystkie bieżące i przyszłe narzędzia produkcyjne obsługują usługę Delta Lake tables z nową wersją protokołu.
Dla niektórych funkcji są dostępne obniżanie poziomu protokołu. Zobacz funkcje Drop Delta table.
Odczyt protokołu
Protokół odczytu zawiera listę wszystkich funkcji, które obsługuje table i że aplikacja musi zrozumieć, aby prawidłowo odczytać table. Uaktualnienie protokołu odczytu table wymaga, aby wszystkie aplikacje czytelnika obsługiwały dodane funkcje.
Ważne
Wszystkie aplikacje piszące do Delta table muszą być w stanie utworzyć migawkę table. W związku z tym obciążenia zapisujące w Delta tables muszą uwzględniać wymagania protokołów czytającego i zapisującego.
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 table i które aplikacja musi zrozumieć, aby poprawnie zapisać w table. Uaktualnienie protokołu zapisu table 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 column wymaga uaktualnienia protokołów odczytu i zapisu. Ponieważ dane są przechowywane inaczej w table, aplikacje do czytania muszą zrozumieć column mapowanie, aby mogły prawidłowo odczytywać dane.
Minimalna wersja czytnika i składnika zapisywania
Uwaga
Podczas włączania mapowania column należy jawnie uaktualnić wersję protokołu table.
Po włączeniu funkcji delta w tableprotokół table jest automatycznie uaktualniany. Usługa Databricks odradza zmianę właściwości minReaderVersion
i minWriterVersion
table. Zmiana tych właściwości table nie uniemożliwia uaktualniania protokołu. Ustawienie tych values na niższą wartość nie powoduje obniżenia poziomu table. Zobacz funkcje Drop Delta table.
Co to są funkcje table?
W środowisku Databricks Runtime 12.2 LTS i nowszych funkcjach usługi Delta Lake table wprowadzono szczegółowe flagi określające, które funkcje są obsługiwane przez daną table. W środowisku Databricks Runtime 11.3 LTS i nowszych funkcje usługi Delta Lake zostały włączone w pakietach nazywanych wersjami protokołu. Table funkcje 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
Table funkcje mają wymagania dotyczące wersji protokołu. Zobacz Funkcje według wersji protokołu.
Funkcja table delty to znacznik wskazujący, że table 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
Czy funkcje table zmieniają sposób włączania funkcji usługi Delta Lake?
Jeśli korzystasz tylko z usługi Delta tables 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 Delta tables, które zostały zaktualizowane do funkcji table, we wszystkich wersjach LTS środowiska Databricks Runtime, tak długo, jak wszystkie funkcje używane przez table są obsługiwane przez tę wersję.
W przypadku odczytu i zapisu z usługi Delta tables przy użyciu innych systemów może być konieczne rozważenie, w jaki sposób funkcje table wpływają na zgodność, ponieważ istnieje ryzyko, że system może nie zrozumieć uaktualnionych wersji protokołu.
Ważne
Table funkcje formatu są wprowadzane do Delta Lake dla wersji zapisywania 7 i wersji czytnika 3. Usługa Azure Databricks dodała kod do wszystkich obsługiwanych wersji LTS środowiska Databricks Runtime, aby dodać obsługę funkcji table, ale dotyczy tylko tych funkcji, które są już obsługiwane w tym środowisku Databricks Runtime. Oznacza to, że chociaż możesz zdecydować się na korzystanie z funkcji table w celu włączenia wygenerowanych columns i nadal pracować z tymi tables w środowisku Databricks Runtime 9.1 LTS, tables z włączoną tożsamością columns (co wymaga środowiska Databricks Runtime 10.4 LTS) nadal nie jest 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 table. W środowisku Databricks Runtime 11.3 LTS i poniżej nie można włączyć funkcji table indywidualnie. Wersje protokołu łączą grupę funkcji.
Funkcja delta tables określa oddzielną wersję protokołu dla protokołu odczytu i zapisu. Dziennik transakcji dla Delty table zawiera informacje o wersjonowaniu protokołu, które wspierają ewolucję Delta Lake. Zobacz Review Delta Lake table szczegóły z opisem.
Wersje protokołu łączą wszystkie funkcje z poprzednich protokołów. Zobacz Funkcje według wersji protokołu.
Uwaga
Począwszy od wersji pisarza 7 i wersji czytelnika 3, usługa Delta Lake wprowadziła koncepcję funkcji table. Korzystając z funkcji table, 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 table?.
Funkcje według wersji protokołu
Na poniższym table przedstawiono minimalne wersje protokołu wymagane dla funkcji 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 Delta obsługuje tylko odczyt tables z funkcjami wymagającymi minReaderVersion
= 1
.