Czyść przetworzone pliki za pomocą automatycznego ładowania

Note

cloudFiles.cleanSource jest dostępny w Databricks Runtime 16.4 i wyższych.

Używa cloudFiles.cleanSource się do przenoszenia lub usuwania plików z katalogu źródłowego po ich przetworzeniu. Usuwanie przetworzonych plików zmniejsza koszty przechowywania i skraca czas trwania przyszłych operacji wystawiania.

Mode Description
OFF (ustawienie domyślne) Pliki w katalogu źródłowym nie są przenoszone ani usuwane.
MOVE Pliki w katalogu źródłowym są przenoszone na ścieżkę określoną przez cloudFiles.cleanSource.moveDestination po upływie czasu przechowywania (domyślnie 30 dni) określonej przez cloudFiles.cleanSource.retentionDuration elapses.
DELETE Pliki w katalogu źródłowym są usuwane po upływie czasu przechowywania (domyślnie 30 dni) określonego przez cloudFiles.cleanSource.retentionDuration upływy.
Dodatkowa opcja Default Prawidłowe wartości Description
cloudFiles.cleanSource.retentionDuration 30 days Ciąg CalendarInterval, taki jak 14 days, 2 weekslub1 month Czas oczekiwania, zanim przetworzone pliki staną się kandydatami do czyszczenia z czystym źródłem. Wartość musi być większa niż 7 dni dla elementu DELETE. Brak minimalnego ograniczenia dla elementu MOVE.
cloudFiles.cleanSource.waitForCompletion false true, false Ta opcja jest dostępna w Databricks Runtime 19 i wyższych.
Czysty kod jest domyślnie operacją opartą na najlepszym wysiłku. Jeśli strumień zakończy przetwarzanie plików przed zakończeniem przenoszenia lub usuwania plików czystego źródła, operacja czystego źródła zostaje zakończona. Ustawienie wymusza cloudFiles.cleanSource.waitForCompletion pozostanie strumieniem przy życiu aż do zakończenia czystego źródła przenoszenia lub usuwania plików. Może to wydłużyć czas działania strumienia, jeśli jest dużo plików do usunięcia.
Dotyczy to tylko sytuacji, gdy strumień kończy się sam (na przykład wyzwalacz availableNow opróżnia wszystkie pliki). Ręczne zatrzymanie lub anulowanie strumienia natychmiast kończy operację czystego źródła, nawet gdy ta opcja jest ustawiona.
cloudFiles.cleanSource.moveDestination Żadne Ścieżka woluminu magazynu w chmurze lub wykazu aparatu Unity Ścieżka do archiwizacji przetworzonych plików, gdy cloudFiles.cleanSource jest ustawiony na MOVE. Może to być ścieżka magazynu w chmurze lub ścieżka woluminu wykazu aparatu Unity (na przykład /Volumes/my_catalog/my_schema/my_volume/archive/).
Lokalizacja przenoszenia musi:
  • Nie jest elementem podrzędnym katalogu źródłowego. Jeśli umieścisz miejsce docelowe przenoszenia wewnątrz katalogu źródłowego, zarchiwizowane pliki zostaną ponownie pozyskane.
  • Bądź w tej samej lokalizacji zewnętrznej, woluminie lub instalacji systemu plików DBFS co źródło. Przenoszenie między zasobnikami i między kontenerami nie jest obsługiwane i powoduje wystąpienie błędu.

Automatyczny moduł ładujący musi mieć uprawnienia do zapisu w tym katalogu.

Rozważania przed umożliwieniem cloudFiles.cleanSource

  • Azure Databricks nie zaleca korzystania z tej opcji, gdy wiele strumieni zużywa dane z tego samego katalogu źródłowego. Najszybszy strumień czyści pliki, więc wolniejsze strumienie nigdy ich nie pobierają.
  • Włączenie tej funkcji wymaga automatycznego modułu ładującego do zachowania dodatkowego stanu w punkcie kontrolnym, co powoduje narzut na wydajność, ale zapewnia lepszą możliwość obserwowania za pośrednictwem cloud_files_state funkcji wartości tabeli. Zobacz cloud_files_state funkcji wartości tabeli.
  • Clean source korzysta z aktualnego ustawienia, aby zdecydować, czy to zrobić, MOVE czy DELETE wybrać dany plik. Załóżmy na przykład, że ustawienie było MOVE wtedy, gdy plik został pierwotnie przetworzony, ale został zmieniony na DELETE , gdy plik stał się kandydatem do oczyszczenia 30 dni później. W takim przypadku czysty kod usuwa plik.
  • Nie ma gwarancji, że pliki zostaną wyczyszczone zaraz po cloudFiles.cleanSource.retentionDuration wygaśnięciu. Aby obniżyć koszty, Auto Loader czyści pliki równocześnie z przetwarzaniem strumienia i kończy je zaraz po zakończeniu lub zakończeniu przetwarzania strumienia. Pliki, które były kandydatami do czyszczenia, ale nie mogły zostać usunięte podczas przetwarzania strumienia, są pobierane przy następnym uruchomieniu Auto Loadera.

Uwagi dotyczące czystego źródła

  • Clean source działa tylko wtedy, gdy jest do przetworzenia partia plików. Nie jest to proces tła, który przebiega niezależnie od spożycia. Jeśli nie ma nowych plików do pobrania w katalogu źródłowym, czyste źródło nie rozpoczyna się dla bieżącego uruchomienia strumienia. W rezultacie, jeśli strumień przestaje otrzymywać nowe pliki, pliki, które już minęły czas przechowywania danych, nie są czyszczone aż do późniejszego uruchomienia strumienia, które przetworzą nową partię.

    Ten wymóg wsadowy dotyczy niezależnie od .cloudFiles.cleanSource.waitForCompletion Ta opcja utrzymuje stream przy życiu tylko na tyle długo, by ukończyć sprzątanie w trakcie jednego przejścia. Nie uruchamia się czystego kodu, gdy nie ma partii do przetworzenia.

  • Jeśli plik zostanie wniesiony podczas N-tego uruchomienia strumienia, dla pliku ustawia się commit_time na N+1 run strumienia. commit_time musi być ustawiony zanim czyste źródło może ustalić, czy plik kwalifikuje się do przeniesienia lub usunięcia, więc najwcześniejszy termin, w którym plik może zostać kandydatem do czyszczenia, to N+2 stream run.

  • Setting commit_time jest konieczny, ale niewystarczający. Plik jest czyszczony dopiero po upływie jego czasu przechowywania, mierzonego od .commit_time Na przykład, przy domyślnym cloudFiles.cleanSource.retentionDuration 30 dniach, plik przetworzony dzisiaj nie kwalifikuje się do wyczyszczenia aż do 30 dni od commit_time jego ustawienia. To wszystko dotyczy niezależnie od liczby przepływów strumieni pomiędzy. Oba warunki muszą być spełnione przed przeniesieniem lub usunięciem pliku.