Usuwanie nieużywanych plików danych za pomocą polecenia Vacuum
Optymalizacja predykcyjna jest uruchamiana VACUUM
automatycznie w tabelach zarządzanych w wykazie aparatu Unity. Usługa Databricks zaleca włączenie optymalizacji predykcyjnych dla wszystkich tabel zarządzanych przez usługę Unity Catalog w celu uproszczenia konserwacji danych i zmniejszenia kosztów magazynowania. Zobacz Optymalizacja predykcyjna dla tabel zarządzanych w wykazie aparatu Unity.
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.
Zastrzeżenia dotyczące próżni
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.
VACUUM
może pozostawić puste katalogi po usunięciu wszystkich plików z nich. Kolejne VACUUM
operacje usuwają te puste katalogi.
Usługa Databricks zaleca używanie optymalizacji predykcyjnej do automatycznego uruchamiania VACUUM
dla tabel delty. Zobacz Optymalizacja predykcyjna dla tabel zarządzanych w wykazie aparatu Unity.
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
.- Dane zestawienia zmian są zarządzane przez usługę
_change_data
Delta Lake w katalogu i usuwane za pomocą poleceniaVACUUM
. Zobacz Use Delta Lake change data feed on Azure Databricks (Używanie zestawienia zmian usługi Delta Lake w usłudze Azure Databricks). - Indeksy filtrów Bloom używają katalogu zarządzanego przez usługę
_delta_index
Delta Lake.VACUUM
czyści pliki w tym katalogu. Zobacz Indeksy filtrów Blooma.
- Dane zestawienia zmian są zarządzane przez usługę
- 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, uruchomienieVACUUM
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ą VACUUM
polecenia . 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 table_name -- vacuum files not required by versions older than the default retention period
VACUUM table_name RETAIN 100 HOURS -- vacuum files not required by versions more than 100 hours old
VACUUM table_name 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:
- 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. - 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 VACUUM
programu , pomaga zrozumieć, że operacja występuje w dwóch fazach:
- 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.
- 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 false
wartość .
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
.