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 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-previewi 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 minWriterVersiontable. 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 w usłudze Delta Lake, zobaczprotokół Delta Lake.

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.

Funkcja minWriterVersion minReaderVersion Dokumentacja
Podstawowe funkcje 2 1 Co to jest usługa Delta Lake?
CHECK ograniczenia 3 1 Set CHECK constraint 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 columns 100 1 Delta Lake wygenerował columns
mapowanie Column 5 2 zmień nazwę i usuń columns z mapowaniem Delta Lake column
Tożsamość columns 6 2 Użyj tożsamości columns w Delta Lake
odczyt funkcji Table 7 1 Co to są funkcje table?
Table funkcje dotyczące zapisu 7 3 Co to są funkcje table?
Śledzenie wierszy 7 1 Używanie śledzenia wierszy dla tables delta
Wektory usuwania 7 3 Co to są wektory usuwania?
TimestampNTZ 7 3 typ TIMESTAMP_NTZ
Klastrowanie liquid 7 3 Użyj klastrowania cieczy dla Delta tables
Mundur 7 2 Przeczytaj Delta tables 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