Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej dla środowiska Databricks Runtime 13.3 LTS lub nowszego.
Dzięki wsparciu archiwizacji w Azure Databricks możesz korzystać z chmurowych polityk cyklu życia w chmurowej pamięci obiektowej zawierającej tabele Delta Lake. Włączenie obsługi archiwizacji w tabeli usługi Delta Lake skutecznie informuje usługę Azure Databricks o ignorowaniu plików starszych niż określony okres w tabeli.
Zasady cyklu życia w chmurze zmniejszają koszty przechowywania poprzez przeniesienie starszych plików do warstwy archiwalnej. Bez wsparcia archiwalnego polityka cyklu życia może zepsuć zapytania względem tabeli Delta Lake, ponieważ pliki danych odczytywane przez zapytania nie są już dostępne. Zobacz Dlaczego warto włączyć wsparcie archiwalne?
Kiedy korzystać z wsparcia archiwalnego
Włącz wsparcie archiwalne w tabeli, gdy spełniają się wszystkie następujące warunki:
- Stosujesz politykę cyklu życia, która archiwizuje pliki danych tabeli na podstawie czasu tworzenia plików.
- Większość zapytań do tabeli odczytuje najnowsze dane lub odfiltrowuje zarchiwizowane pliki.
- Zapytania wymagające archiwalnych danych są rzadkie, więc możesz poczekać, aż ktoś przywróci te pliki w magazynie danych Twojego dostawcy chmury, zanim ponownie wykonasz zapytanie. Zobacz Przywracanie zarchiwizowanych plików.
Nie korzystaj z obsługi archiwizacji, jeśli Twoje zapytania regularnie skanują całą historię tabeli. Zapytania wymagające archiwalnych plików kończą się niepowodzeniem. Wsparcie archiwalne również nie działa z politykami cyklu życia opartymi na czasie dostępu lub tagach. Zobacz Ograniczenia.
Wymagania
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ą?
Wsparcie archiwalne pozwala tylko na zapytania, które zwracają poprawne wyniki bez dotykania archiwalnych 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.
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. Zobacz Zmień regułę przejścia zarządzania cyklem życia.
Bez wsparcia archiwalnego operacje na tabelach Delta Lake mogą przestać działać, ponieważ pliki danych lub pliki dziennika transakcji zostały przeniesione do archiwalnych lokalizacji i są niedostępne podczas wykonywania zapytania. 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ń.
Zapytania zoptymalizowane pod kątem zarchiwizowanych danych
Obsługa archiwizacji w Azure Databricks optymalizuje te zapytania względem tabel Delta Lake.
| Zapytanie | 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 nadpisują lub usuwają dane, w tym REPLACE TABLE, INSERT OVERWRITE, TRUNCATE TABLE, oraz 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 polityki cyklu życia. |
Wczesne błędy i komunikaty o błędach
W przypadku zapytań, które muszą zeskanować archiwalne pliki, aby uzyskać poprawne wyniki, konfiguracja wsparcia archiwalnego dla Delta Lake przynosi następujące skutki:
- 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 składni SHOW ARCHIVED FILES. 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 niezarchiwizowanych wierszy, aby spełnić określony LIMIT. Zobacz Ograniczenia.
Włączanie obsługi archiwizacji
Włączasz wsparcie archiwalne dla tabel Delta Lake, ręcznie określając interwał archiwalny skonfigurowany w podstawowej polityce zarządzania cyklem życia chmury.
ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');
Ustawienie czasu informuje usługę timeUntilArchived Azure Databricks o ignorowaniu plików w tabeli usługi Delta Lake, które są starsze niż określony okres. To ustawienie jest oddzielone od zasad cyklu życia konta w chmurze. Zmiany w jednym nie wpływają na drugą. Jeśli zaktualizujesz zasady cyklu życia na koncie chmury, musisz również zaktualizować ustawienie archiwizacji w tabeli usługi Delta Lake. Zobacz Zmień regułę przejścia zarządzania cyklem życia.
Po ustawieniu nowych zasad cyklu życia na koncie chmury może upłynąć do 24 godzin, aby zmiany zaczęły obowiązywać. Zobacz Wykonywanie zasad zarządzania cyklem życia.
Jeśli to ustawienie zostanie włączone bez zasad cyklu życia ustawionych dla magazynu obiektów w chmurze, obsługa archiwalna umożliwia pomyślne wykonywanie zapytań, a wyniki obejmują dane z plików oznaczonych do archiwizacji. Zobacz Jak Azure Databricks próbuje dane dla przywróconych danych?.
Ostrzeżenie
Twoja polityka cyklu życia dla chmury nie może archiwizować dziennika transakcji delta (katalogu _delta_log/). Zobacz Ograniczenia.
Ważne
Wsparcie archiwalne opiera się całkowicie na kompatybilnych środowiskach obliczeniowych Azure Databricks i działa tylko dla tabel Delta Lake. Konfigurowanie obsługi archiwizacji nie zmienia zachowania, zgodności ani wsparcia w klientach open source Delta Lake ani w środowisku Databricks Runtime 12.2 LTS lub wcześniejszych wersjach.
Pokaż zarchiwizowane pliki
Aby zidentyfikować pliki, które należy przywrócić w celu ukończenia danego zapytania, użyj polecenia SHOW ARCHIVED FILES.
SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];
Ta operacja zwraca nazwy plików zarchiwizowanych jako ramkę danych Spark. Przywróć niezbędne zarchiwizowane pliki zgodnie z udokumentowanymi instrukcjami od dostawcy magazynu obiektów. Zobacz Przywracanie zarchiwizowanych plików.
Aby uzyskać informacje na temat sposobu sprawdzania przywróconych danych w usłudze Azure Databricks, zobacz Jak usługa Azure Databricks próbuje sprawdzić przywrócone dane?.
Uwaga
Podczas tej operacji usługa Delta Lake ma dostęp tylko do statystyk danych zawartych w dzienniku transakcji. Domyślnie są to statystyki zebrane w pierwszych 32 kolumnach tabeli:
- Wartości minimalne
- Wartości maksymalne
- Liczba wystąpień 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. Databricks zaleca udostępnianie predykatów zawierających pola, na których dane są partycjonowane, z-sorotowane lub zklastrowane, aby zmniejszyć liczbę plików, które należy przywrócić.
Przywracanie zarchiwizowanych plików
Aby zidentyfikować wszystkie pliki wymagające przywrócenia, użyj polecenia SHOW ARCHIVED FILES , aby wyświetlić listę zarchiwizowanych plików.
Użyj interfejsów API rehydratacji, aby przywrócić pliki do warstwy magazynowania online. Zobacz Przywracanie obiektów Blob z warstwy archiwum.
Po przywróceniu plików w magazynie dostawcy usług w chmurze możesz wykonać zapytanie dotyczące tabeli. Obsługa archiwizacji automatycznie rozpoznaje przywrócone pliki. Aby uzyskać informacje na temat sposobu sprawdzania przywróconych danych w usłudze Azure Databricks, zobacz Jak usługa Azure Databricks próbuje sprawdzić przywrócone dane?.
Aktualizowanie lub usuwanie zarchiwizowanych danych
Operacja kończy się niepowodzeniem, jeśli uruchomisz operację MERGE, UPDATElub 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ć (zobacz Przywracanie zarchiwizowanych plików).
W jaki sposób Azure Databricks próbkowanie 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, przyjęte za zarchiwizowane, zostały przywrócone, Azure Databricks zakłada, że wszystkie pliki związane z zapytaniem zostały przywrócone i zapytanie jest przetwarzane. Wyniki obejmują dane z plików oznaczonych do archiwizacji.
Próbkowanie może nie dotyczyć wszystkich zapytań, zobacz Ograniczenia.
Ograniczenia
Wsparcie archiwalne ma następujące ograniczenia:
- Obsługa archiwizacji dotyczy tylko plików danych. Jeśli jakiekolwiek pliki w dzienniku transakcji delty (
_delta_log/katalog) zostaną przeniesione do zarchiwizowanej warstwy magazynowania, tabela stanie się całkowicie niedostępna i wszystkie zapytania względem tabeli kończą się niepowodzeniem. Należy skonfigurować politykę cyklu życia chmury, aby ścieżka_delta_log/nie została uwzględniona w archiwizacji. Zobacz przykłady konfiguracji cyklu życia S3. - 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żyć
DROP COLUMNw tabeli z zarchiwizowanymi plikami. -
REORG TABLE APPLY PURGEpodejmuje wszelkie starania, ale działa tylko na niearchiwizowanych plikach wektorów usuwania i powiązanych plikach danych.PURGENie można usunąć archiwalnych plików wektorów usuwania. - Rozszerzenie reguły przejścia zarządzania cyklem życia powoduje nieoczekiwane zachowanie. Zobacz Rozszerzanie zasady przejścia zarządzania cyklem życia.
-
LIMITzapytania dotyczące tabel z włączoną obsługą archiwizacji nie wyzwalają próbkowania dla przywróconych danych. Jeśli dane tabeli zostaną przywrócone, większość zapytań zakończy się pomyślnie na przywróconych danych, ale zapytanieLIMITzwróci błądDELTA_ARCHIVED_FILES_IN_LIMIT. Zobacz Jak Azure Databricks próbuje dane dla przywróconych danych?.
Zmienianie reguły przejścia zarządzania cyklem życia
Jeśli zmienisz interwał czasu reguły przejścia zarządzania cyklem życia chmury, musisz zaktualizować właściwość delta.timeUntilArchived do tego samego interwału.
Jeśli czas przed archiwizacją zostanie skrócony (krótszy czas od utworzenia pliku), wsparcie archiwalne dla tabeli Delta Lake działa normalnie po aktualizacji właściwości tabeli.
Rozszerzenie reguły przejściowej zarządzania cyklem życia
Jeśli interwał czasu przed uruchomieniem archiwizacji zostanie wydłużony (aby dodać więcej czasu przed uruchomieniem 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 ustawiaj 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 w odniesieniu do czasu tworzenia pliku zarejestrowanego w dzienniku transakcji Delta. Nie ma jawnej wiedzy na temat podstawowych zasad. W okresie opóźnienia między starym a nowym progiem archiwalnym możesz zastosować jedno z tych sposobów, aby uniknąć wykonywania zapytań do zarchiwizowanych plików:
- Możesz pozostawić to ustawienie
delta.timeUntilArchivedze starym progiem, dopóki nie minie wystarczająco dużo czasu, aby wszystkie pliki zostały zarchiwizowane.- Na powyższym przykładzie przez pierwsze 30 dni każdego dnia kolejna porcja danych uznawana jest za zarchiwizowaną przez usługę Azure Databricks, ale nadal musi być zarchiwizowana przez dostawcę usług chmurowych. Nie powoduje to błędu, ale ignoruje niektóre pliki danych, które mogą być odpytywane.
- Po upływie 30 dni zaktualizuj
delta.timeUntilArchivedna90 days.
- Każdego dnia możesz aktualizować ustawienie
delta.timeUntilArchived, aby odzwierciedlało bieżący interwał podczas okresu 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.timeUntilArchived67 daysdokładnie odzwierciedla wiek wszystkich zarchiwizowanych plików danych. - Takie podejście jest konieczne tylko wtedy, gdy musisz uzyskać dostęp do wszystkich danych w gorących warstwach.
- 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.