Obsługa archiwizacji w usłudze Azure Databricks
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej dla środowiska Databricks Runtime 13.3 LTS lub nowszego.
Obsługa archiwalna w usłudze Azure Databricks wprowadza kolekcję funkcji, które umożliwiają korzystanie z zasad cyklu życia opartych na chmurze w magazynie obiektów w chmurze zawierających tabele delty.
Ważne
Usługa Azure Databricks obsługuje archiwizację tylko dla usługi Azure Archive. Zobacz Dokumentację platformy Azure dotyczącą optymalizowania kosztów za pomocą zarządzania cyklem życia.
Dlaczego należy włączyć obsługę archiwalną?
Obsługa archiwizacji umożliwia tylko poprawne odpowiadanie na zapytania bez dotykania zarchiwizowanych plików. Te zapytania obejmują te, które:
- Tylko metadane kwerendy.
- Mają filtry, które nie wymagają skanowania żadnych zarchiwizowanych plików.
Wszystkie zapytania wymagające danych w zarchiwizowanych plikach kończą się niepowodzeniem.
Ważne
Usługa Azure Databricks nigdy nie zwraca wyników dla zapytań, które wymagają zarchiwizowanych plików w celu zwrócenia poprawnego wyniku.
Bez obsługi archiwizacji operacje względem tabel delty mogą zostać przerwane, ponieważ pliki danych lub pliki dziennika transakcji zostały przeniesione do zarchiwizowanych lokalizacji i są niedostępne podczas wykonywania zapytań. Obsługa archiwalna wprowadza optymalizacje, aby uniknąć wykonywania zapytań dotyczących zarchiwizowanych danych, gdy jest to możliwe. Dodaje również nową składnię do identyfikowania plików, które muszą zostać przywrócone z magazynu archiwalnego w celu ukończenia zapytań.
Włączenie obsługi archiwizacji dla tabeli w usłudze Azure Databricks nie tworzy ani nie zmienia zasad cyklu życia zdefiniowanych dla magazynu obiektów w chmurze. W przypadku żądanych wyników zasady cyklu życia chmury i delta.timeUntilArchived
ustawienie powinno być równe.
Zapytania zoptymalizowane pod kątem zarchiwizowanych danych
Obsługa archiwizacji w usłudze Azure Databricks optymalizuje następujące zapytania względem tabel delta:
Query | Nowe zachowanie |
---|---|
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] |
Automatycznie ignoruj zarchiwizowane pliki i zwracaj wyniki z danych w niearchiwizowanej warstwie magazynowania. |
Polecenia konserwacji usługi Delta Lake: OPTIMIZE , ZORDER , , ANALYZE PURGE |
Automatycznie ignoruj zarchiwizowane pliki i uruchamiaj konserwację w pozostałej części tabeli. |
Instrukcje DDL i DML, które zastępują dane lub usuwają dane, w tym następujące: REPLACE TABLE , , INSERT OVERWRITE , TRUNCATE TABLE DROP TABLE |
Oznacz wpisy dziennika transakcji dla docelowych zarchiwizowanych plików danych jako usunięte. |
FSCK REPAIR TABLE |
Ignoruj zarchiwizowane pliki i sprawdzaj tylko pliki, które nie osiągnęły zasad cyklu życia. |
Zobacz Ograniczenia.
Wczesne błędy i komunikaty o błędach
W przypadku zapytań, które muszą skanować zarchiwizowane pliki w celu wygenerowania prawidłowych wyników, skonfigurowanie obsługi archiwalnej usługi Delta Lake zapewnia następujące elementy:
- Zapytania kończą się niepowodzeniem wcześniej, jeśli próbują uzyskać dostęp do zarchiwizowanych plików, zmniejszając zmarnowane zasoby obliczeniowe i umożliwiając użytkownikom szybkie dostosowywanie i ponowne uruchamianie zapytań.
- Komunikaty o błędach informują użytkowników, że zapytanie nie powiodło się, ponieważ zapytanie próbowało uzyskać dostęp do zarchiwizowanych plików.
Użytkownicy mogą wygenerować raport plików, które muszą zostać przywrócone przy użyciu SHOW ARCHIVED FILES
składni. Zobacz Pokaż zarchiwizowane pliki.
Ważne
Jeśli wystąpi błąd Not enough files to satisfy LIMIT
, tabela nie zawiera wystarczającej liczby wierszy danych w niearchiwowanych plikach, aby spełnić liczbę rekordów określonych przez LIMIT
. Obniż klauzulę, LIMIT
aby znaleźć wystarczająco dużo niearchiwowanych wierszy, aby spełnić określony LIMIT
element .
Włączanie obsługi archiwizacji
Obsługę archiwizacji w usłudze Azure Databricks dla tabel delty można włączyć ręcznie, określając interwał archiwizacji skonfigurowany w podstawowych zasadach zarządzania cyklem życia chmury, jak w poniższej przykładowej składni:
ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');
Włączenie obsługi archiwizacji skutecznie informuje usługę Azure Databricks o ignorowaniu plików starszych niż określony okres. Jeśli to ustawienie zostanie włączone bez ustawiania zasad cyklu życia dla magazynu obiektów w chmurze, usługa Azure Databricks nadal ignoruje pliki na podstawie tego określonego progu, ale żadne dane nie są archiwizowane.
Usługa Delta Lake nie współdziała bezpośrednio z zasadami zarządzania cyklem życia skonfigurowanymi na koncie chmury. Jeśli zaktualizujesz zasady na koncie chmury, musisz zaktualizować zasady w tabeli delty. Zobacz Zmienianie reguły przejścia zarządzania cyklem życia.
Ważne
Obsługa archiwalna opiera się całkowicie na zgodnych środowiskach obliczeniowych usługi Azure Databricks i działa tylko w przypadku tabel różnicowych. Konfigurowanie obsługi archiwizacji nie zmienia zachowania, zgodności ani obsługi w klientach usługi Delta Lake systemu operacyjnego lub środowisku Databricks Runtime 12.2 LTS i poniżej.
Pokaż zarchiwizowane pliki
Aby zidentyfikować pliki, które należy przywrócić w celu ukończenia danego zapytania, użyj polecenia SHOW ARCHIVED FILES
, jak w poniższym przykładzie:
SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];
Ta operacja zwraca identyfikatory URI dla zarchiwizowanych plików jako ramki danych platformy Spark. Przywróć niezbędne zarchiwizowane pliki zgodnie z udokumentowanymi instrukcjami od dostawcy magazynu obiektów. Aby uzyskać informacje na temat sposobu sprawdzania przywróconych danych w usłudze Azure Databricks, zobacz Jak jest przykład usługi Azure Databricks dla przywróconych danych?.
Uwaga
Podczas tej operacji usługa Delta Lake ma dostęp tylko do statystyk danych zawartych w dzienniku transakcji. Domyślnie są to następujące statystyki zebrane na pierwszych 32 kolumnach w tabeli:
- Wartości minimalne
- Wartości maksymalne
- Liczby wartości null
- Łączna liczba rekordów
Zwrócone pliki zawierają wszystkie zarchiwizowane pliki, które muszą być odczytywane, aby określić, czy w pliku istnieją rekordy spełniające predykat. Usługa Databricks zaleca udostępnianie predykatów zawierających pola, na których dane są partycjonowane, uporządkowane z lub klastrowane, aby zmniejszyć liczbę plików, które należy przywrócić.
Aktualizowanie lub usuwanie zarchiwizowanych danych
Operacja kończy się niepowodzeniem, jeśli uruchomisz operację MERGE
, UPDATE
lub DELETE
, która ma wpływ na dane w zarchiwizowanych plikach. Aby uruchomić te operacje, należy przywrócić dane do warstwy magazynowania, która obsługuje szybkie pobieranie. Użyj SHOW ARCHIVED FILES
polecenia , aby określić pliki, które należy przywrócić.
W jaki sposób przykład usługi Azure Databricks dla przywróconych danych?
Gdy usługa Azure Databricks przygotowuje skanowanie w tabeli z włączoną obsługą archiwizacji, próbkuje pliki starsze niż określony okres przechowywania wymagany przez zapytanie w celu określenia, czy pliki zostały przywrócone.
Jeśli wyniki wskazują, że próbkowane pliki, które mają zostać zarchiwizowane, zostały przywrócone, usługa Azure Databricks zakłada, że wszystkie pliki dla zapytania zostały przywrócone i procesy zapytań.
Ograniczenia
Istnieją następujące ograniczenia:
- Nie istnieje obsługa zasad zarządzania cyklem życia, które nie są oparte na czasie tworzenia plików. Obejmuje to zasady oparte na czasie dostępu i zasady oparte na tagach.
- Nie można używać
DROP COLUMN
w tabeli z zarchiwizowanymi plikami. REORG TABLE APPLY PURGE
podejmuje najlepszą próbę, ale działa tylko na plikach wektorów usuwania i plikach danych, do których nie są archiwizowane.PURGE
Program nie może usunąć zarchiwizowanych plików wektorów usuwania.- Rozszerzenie reguły przejścia zarządzania cyklem życia powoduje nieoczekiwane zachowanie. Zobacz Rozszerzanie reguły przejścia zarządzania cyklem życia.
Zmienianie reguły przejścia zarządzania cyklem życia
Jeśli zmienisz interwał czasu dla reguły przejścia zarządzania cyklem życia chmury, musisz zaktualizować właściwość delta.timeUntilArchived
.
Jeśli interwał czasu przed skróceniem archiwizacji (krótszy czas od momentu utworzenia pliku), obsługa archiwalna tabeli delty będzie działać normalnie po zaktualizowaniu właściwości tabeli.
Rozszerzanie reguły przejścia zarządzania cyklem życia
Jeśli interwał czasu przed przedłużeniem archiwizacji (aby dodać więcej czasu przed wyzwoleniem archiwizacji), zaktualizowanie właściwości delta.timeUntilArchived
do nowej wartości może prowadzić do błędów. Dostawcy usług w chmurze nie przywracają automatycznie plików z zarchiwizowanego magazynu po zmianie zasad przechowywania danych. Oznacza to, że pliki, które wcześniej kwalifikowały się do archiwizacji, ale obecnie nie zostały uznane za uprawnione do archiwizacji, są nadal archiwizowane.
Ważne
Aby uniknąć błędów, nigdy nie ustaw właściwości delta.timeUntilArchived
na wartość większą niż rzeczywisty wiek ostatnio zarchiwizowanych danych.
Rozważmy scenariusz, w którym interwał czasu archiwizacji jest zmieniany z 60 dni na 90 dni:
- Wszystkie rekordy z zakresu od 60 do 90 dni są archiwizowane po zmianie zasad.
- Przez 30 dni żadne nowe pliki nie są archiwizowane (najstarsze niearchiwizowane pliki mają 60 dni, gdy zasady zostaną rozszerzone).
- Po upływie 30 dni zasady cyklu życia poprawnie opisują wszystkie zarchiwizowane dane.
Ustawienie delta.timeUntilArchived
śledzi ustawiony interwał czasu dla czasu tworzenia pliku zarejestrowanego przez dziennik transakcji funkcji Delta. Nie ma jawnej wiedzy na temat podstawowych zasad. W okresie opóźnienia między starym progiem archiwizacji a nowym progiem archiwizacji można podjąć jedną z następujących metod, aby uniknąć wykonywania zapytań dotyczących zarchiwizowanych plików:
- Możesz pozostawić to ustawienie
delta.timeUntilArchived
ze starym progiem, dopóki nie minie wystarczająco dużo czasu, aby wszystkie pliki zostały zarchiwizowane.- W powyższym przykładzie każdego dnia przez pierwsze 30 dni warto uznać dane za zarchiwizowane przez usługę Azure Databricks, ale nadal muszą być zarchiwizowane przez dostawcę usług w chmurze. Nie powoduje to błędu, ale ignoruje niektóre pliki danych, które mogą być odpytywane.
- Po upływie 30 dni zaktualizuj element
delta.timeUntilArchived
na90 days
.
- Ustawienie każdego dnia można zaktualizować
delta.timeUntilArchived
tak, aby odzwierciedlało bieżący interwał w okresie opóźnienia.- Chociaż zasady chmury są ustawione na 90 dni, rzeczywisty wiek zarchiwizowanych danych zmienia się w czasie rzeczywistym. Na przykład po upływie 7 dni ustawienie
delta.timeUntilArchived
67 days
dokładnie odzwierciedla wiek wszystkich zarchiwizowanych plików danych. - Takie podejście jest konieczne tylko wtedy, gdy musisz uzyskać dostęp do wszystkich danych w warstwach Gorąca.
- Chociaż zasady chmury są ustawione na 90 dni, rzeczywisty wiek zarchiwizowanych danych zmienia się w czasie rzeczywistym. Na przykład po upływie 7 dni ustawienie
Uwaga
Aktualizowanie wartości parametru delta.timeUntilArchived
nie zmienia danych, które są archiwizowane. Zmienia tylko dane, które usługa Azure Databricks traktuje tak, jakby zostały zarchiwizowane.