Usuwanie nieużywanych plików danych za pomocą polecenia Vacuum

Możesz usunąć pliki danych, do których nie odwołuje się tabela delty, która jest starsza niż próg przechowywania, uruchamiając VACUUM polecenie w tabeli. Regularne uruchamianie VACUUM jest ważne w przypadku kosztów i zgodności ze względu na następujące kwestie:

  • Usuwanie nieużywanych plików danych zmniejsza koszty magazynowania w chmurze.
  • Pliki danych usunięte przez VACUUM program mogą zawierać rekordy, które zostały zmodyfikowane lub usunięte. Trwałe usunięcie tych plików z magazynu w chmurze gwarantuje, że te rekordy nie będą już dostępne.

Domyślny próg przechowywania plików danych po uruchomieniu VACUUM wynosi 7 dni. Aby zmienić to zachowanie, zobacz Konfigurowanie przechowywania danych dla zapytań dotyczących podróży czasowych.

Usługa Databricks zaleca używanie optymalizacji predykcyjnej do automatycznego uruchamiania VACUUM dla tabel delty. Zobacz Optymalizacja predykcyjna usługi Delta Lake.

Niektóre funkcje usługi Delta Lake używają plików metadanych do oznaczania danych jako usuniętych, a nie ponownego zapisywania plików danych. Możesz użyć REORG TABLE ... APPLY (PURGE) polecenia , aby zatwierdzić te usunięcia i przepisać pliki danych. Zobacz Przeczyszczanie usuwania tylko metadanych, aby wymusić ponowne zapisywanie danych.

Ważne

  • W środowisku Databricks Runtime 13.3 LTS lub nowszym VACUUM semantyka płytkich klonów z tabelami zarządzanymi w wykazie aparatu Unity różni się od innych tabel delty. Zobacz Płytkie klony wykazu próżni i aparatu Unity.
  • VACUUM Usuwa wszystkie pliki z katalogów, które nie są zarządzane przez usługę Delta Lake, ignorując katalogi rozpoczynające się od _ lub .. Jeśli przechowujesz dodatkowe metadane, takie jak punkty kontrolne przesyłania strumieniowego ze strukturą w katalogu tabeli delty, użyj nazwy katalogu, takiego jak _checkpoints.
  • Możliwość wykonywania zapytań dotyczących wersji tabeli starszych niż okres przechowywania zostanie utracona po uruchomieniu polecenia VACUUM.
  • Pliki dziennika są usuwane automatycznie i asynchronicznie po operacjach punktu kontrolnego i nie podlegają .VACUUM Podczas gdy domyślny okres przechowywania plików dziennika wynosi 30 dni, uruchomienie VACUUM w tabeli usuwa pliki danych niezbędne do podróży w czasie.

Uwaga

Po włączeniu buforowania dysku klaster może zawierać dane z plików Parquet, które zostały usunięte za pomocą VACUUMpolecenia . W związku z tym może być możliwe wykonywanie zapytań dotyczących danych z poprzednich wersji tabeli, których pliki zostały usunięte. Ponowne uruchomienie klastra spowoduje usunięcie buforowanych danych. Zobacz Konfigurowanie pamięci podręcznej dysku.

Przykładowa składnia próżni

VACUUM eventsTable   -- vacuum files not required by versions older than the default retention period

VACUUM '/data/events' -- vacuum files in path-based table

VACUUM delta.`/data/events/`

VACUUM delta.`/data/events/` RETAIN 100 HOURS  -- vacuum files not required by versions more than 100 hours old

VACUUM eventsTable DRY RUN    -- do dry run to get the list of files to be deleted

Aby uzyskać szczegółowe informacje o składni spark SQL, zobacz VACUUM.

Zapoznaj się z dokumentacją interfejsu API usługi Delta Lake, aby zapoznać się ze szczegółami składni języka Scala, Java i Python.

Uwaga

Użyj słowa kluczowego RETAIN , aby określić próg używany do określenia, czy plik danych ma zostać usunięty. Polecenie VACUUM używa tego progu, aby spojrzeć wstecz w określonym czasie i zidentyfikować najnowszą wersję tabeli w tej chwili. Funkcja Delta zachowuje wszystkie pliki danych wymagane do wykonywania zapytań dotyczących tej wersji tabeli i wszystkich nowszych wersji tabel. To ustawienie współdziała z innymi właściwościami tabeli. Zobacz Konfigurowanie przechowywania danych dla zapytań dotyczących podróży w czasie.

Przeczyszczanie usuwania tylko metadanych w celu wymuszenia ponownego zapisywania danych

Polecenie REORG TABLE udostępnia składnię umożliwiającą APPLY (PURGE) ponowne zapisywanie danych w celu zastosowania usuwania nietrwałego. Usuwanie nietrwałe nie powoduje ponownego zapisywania danych ani usuwania plików danych, ale raczej używaj plików metadanych, aby wskazać, że niektóre wartości danych uległy zmianie. Zobacz REORG TABLE (TABELA REORG).

Operacje, które tworzą usuwanie nietrwałe w usłudze Delta Lake, obejmują następujące elementy:

  • Usuwanie kolumn z włączonym mapowaniem kolumn.
  • Usuwanie wierszy z włączonymi wektorami usuwania.
  • Wszelkie modyfikacje danych w klastrach z włączoną obsługą aplikacji Photon po włączeniu wektorów usuwania.

Po włączeniu usuwania nietrwałego stare dane mogą pozostać fizycznie obecne w bieżących plikach tabeli nawet po usunięciu lub zaktualizowaniu danych. Aby fizycznie usunąć te dane z tabeli, wykonaj następujące kroki:

  1. Uruchom program REORG TABLE ... APPLY (PURGE). Po wykonaniu tej czynności stare dane nie są już obecne w bieżących plikach tabeli, ale nadal znajdują się w starszych plikach, które są używane do podróży w czasie.
  2. Uruchom polecenie VACUUM , aby usunąć te starsze pliki.

REORG TABLE Tworzy nową wersję tabeli, gdy operacja zostanie ukończona. Wszystkie wersje tabeli w historii przed tą transakcją odnoszą się do starszych plików danych. Koncepcyjnie jest to podobne do OPTIMIZE polecenia , w którym pliki danych są ponownie zapisywane, mimo że dane w bieżącej wersji tabeli pozostają spójne.

Ważne

Pliki danych są usuwane tylko wtedy, gdy pliki wygasły zgodnie z okresem VACUUM przechowywania. Oznacza to, że należy wykonać z VACUUM opóźnieniem po upływie REORG tego czasu, aby starsze pliki wygasły. Okres VACUUM przechowywania można zmniejszyć, aby skrócić wymagany czas oczekiwania, kosztem zmniejszenia maksymalnej historii, która jest przechowywana.

Jakiego rozmiaru potrzebuje klaster próżniowy?

Aby wybrać prawidłowy rozmiar klastra dla VACUUMprogramu , pomaga zrozumieć, że operacja występuje w dwóch fazach:

  1. Zadanie rozpoczyna się przy użyciu wszystkich dostępnych węzłów funkcji wykonawczej do równoległego wyświetlania listy plików w katalogu źródłowym. Ta lista jest porównywana ze wszystkimi plikami, do których obecnie odwołuje się dziennik transakcji usługi Delta, aby zidentyfikować pliki do usunięcia. Kierowca siedzi bezczynnie w tym czasie.
  2. Następnie sterownik wystawia polecenia usuwania dla każdego pliku do usunięcia. Usuwanie pliku jest operacją tylko sterowników, co oznacza, że wszystkie operacje występują w jednym węźle, podczas gdy węzły robocze znajdują się w stanie bezczynności.

Aby zoptymalizować koszty i wydajność, usługa Databricks zaleca następujące zalecenia, szczególnie w przypadku długotrwałych zadań próżniowych:

  • Uruchamianie opróżniania w klastrze z zestawem automatycznego skalowania dla procesów roboczych 1–4, gdzie każdy proces roboczy ma 8 rdzeni.
  • Wybierz sterownik z zakresu od 8 do 32 rdzeni. Zwiększ rozmiar sterownika, aby uniknąć błędów braku pamięci (OOM).

Jeśli VACUUM operacje regularnie usuwają ponad 10 tysięcy plików lub przejmują ponad 30 minut czasu przetwarzania, możesz zwiększyć rozmiar sterownika lub liczbę procesów roboczych.

Jeśli okaże się, że spowolnienie występuje podczas identyfikowania plików do usunięcia, dodaj więcej węzłów roboczych. Jeśli spowolnienie wystąpi podczas uruchamiania poleceń usuwania, spróbuj zwiększyć rozmiar sterownika.

Jak często należy uruchamiać próżnię?

Usługa Databricks zaleca regularne uruchamianie VACUUM na wszystkich tabelach, aby zmniejszyć nadmierne koszty magazynowania danych w chmurze. Domyślny próg przechowywania dla próżni wynosi 7 dni. Ustawienie wyższego progu zapewnia dostęp do większej historii dla tabeli, ale zwiększa liczbę przechowywanych plików danych, a w rezultacie wiąże się z większymi kosztami magazynowania od dostawcy usług w chmurze.

Dlaczego nie można opróżnić tabeli delty z progiem niskiego przechowywania?

Ostrzeżenie

Zaleca się ustawienie interwału przechowywania na co najmniej 7 dni, ponieważ stare migawki i niezatwierdzone pliki mogą nadal być używane przez równoczesnych czytników lub składników zapisywania do tabeli. Jeśli VACUUM czyści aktywne pliki, równoczesne czytniki mogą zakończyć się niepowodzeniem lub, co gorsza, tabele mogą być uszkodzone, gdy VACUUM usuwa pliki, które nie zostały jeszcze zatwierdzone. Należy wybrać interwał dłuższy niż najdłuższej działająca współbieżna transakcja i najdłuższy okres, o jaki każdy strumień może opóźnić się w stosunku do najnowszej aktualizacji tabeli.

Usługa Delta Lake ma kontrolę bezpieczeństwa, aby zapobiec uruchamianiu niebezpiecznego VACUUM polecenia. Jeśli masz pewność, że w tej tabeli nie są wykonywane żadne operacje, które trwają dłużej niż interwał przechowywania, który ma być określony, możesz wyłączyć tę kontrolę bezpieczeństwa, ustawiając właściwość spark.databricks.delta.retentionDurationCheck.enabled konfiguracji platformy Spark na falsewartość .

Informacje o inspekcji

VACUUM zatwierdzenia w dzienniku transakcji usługi Delta zawierają informacje o inspekcji. Zdarzenia inspekcji można wykonywać za pomocą polecenia DESCRIBE HISTORY.