Udostępnij za pośrednictwem


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, , ANALYZEPURGE 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 TABLEDROP 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 LIMITelement .

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, 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ć.

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:

  1. Wszystkie rekordy z zakresu od 60 do 90 dni są archiwizowane po zmianie zasad.
  2. Przez 30 dni żadne nowe pliki nie są archiwizowane (najstarsze niearchiwizowane pliki mają 60 dni, gdy zasady zostaną rozszerzone).
  3. 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:

  1. 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 na 90 days.
  2. 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.

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.