Udostępnij za pośrednictwem


Co to jest tryb listowania katalogów Auto Loader?

Auto Loader domyślnie używa trybu listy katalogów. W trybie listy katalogów funkcja automatycznego ładowania identyfikuje nowe pliki, wyświetlając katalog wejściowy. Tryb wyświetlania katalogu umożliwia szybkie uruchamianie strumieni Auto Loader bez potrzeby konfiguracji uprawnień, poza dostępem do danych w magazynie w chmurze.

Aby uzyskać najlepszą wydajność w trybie listy katalogów, użyj środowiska Databricks Runtime 9.1 lub nowszego. W tym artykule opisano domyślne funkcje trybu wyświetlania listy katalogów, a także optymalizacje na podstawie kolejności leksykalnej plików.

Jak działa tryb wyświetlania listy katalogów?

Usługa Azure Databricks ma zoptymalizowany tryb wyświetlania listy katalogów dla automatycznego modułu ładującego w celu wydajniejszego odnajdywania plików w magazynie w chmurze niż inne opcje platformy Apache Spark.

Jeśli na przykład pliki są przekazywane co 5 minut jako /some/path/YYYY/MM/DD/HH/fileName, aby znaleźć wszystkie pliki w tych katalogach, źródło plików platformy Apache Spark wyświetla listę wszystkich podkatalogów równolegle. Poniższy algorytm ocenia całkowitą liczbę wywołań API LIST do magazynu obiektów.

1 (katalog podstawowy) + 365 (dziennie) * 24 (na godzinę) = 8761 wywołań

Po otrzymaniu spłaszczonej odpowiedzi z magazynu funkcja automatycznego ładowania zmniejsza liczbę wywołań interfejsu API do liczby plików w magazynie podzielonych przez liczbę wyników zwracanych przez każde wywołanie interfejsu API, co znacznie zmniejsza koszty chmury. W poniższej tabeli przedstawiono liczbę plików zwracanych przez każde wywołanie interfejsu API dla wspólnego magazynu obiektów:

Wyniki zwrócone na jedno wywołanie Przechowywanie obiektów
1000 S3
5000 ADLS
1024 GCS

Lista przyrostowa (przestarzała)

Ważne

Ta funkcja jest przestarzała. Usługa Databricks zaleca używanie trybu powiadomień o plikach zamiast listy przyrostowej.

Uwaga

Dostępne w środowisku Databricks Runtime 9.1 LTS lub nowszym.

Lista przyrostowa jest dostępna dla Azure Data Lake Storage (abfss://), S3 (s3://) oraz GCS (gs://).

W przypadku plików wygenerowanych leksykograficznie, Auto Loader korzysta z leksykograficznego porządkowania plików i zoptymalizowanych interfejsów API listowania, aby zwiększyć wydajność listowania katalogów, wyświetlając ostatnio zarejestrowane pliki zamiast wyświetlać zawartość całego katalogu.

Domyślnie moduł automatycznego ładowania automatycznie wykrywa, czy dany katalog ma zastosowanie do listy przyrostowej, sprawdzając i porównując ścieżki plików z wcześniej ukończonymi listami katalogów. Aby zapewnić kompletność danych w trybie auto, Auto Loader automatycznie wyzwala pełną listę katalogów po zakończeniu 7 kolejnych list przyrostowych. Częstotliwość pełnych list katalogów można kontrolować, ustawiając cloudFiles.backfillInterval do wyzwalania asynchronicznych uzupełnień w danym przedziale czasowym.

Porządkowanie leksykalne plików

Aby pliki były uporządkowane leksykalnie, nowe przekazane pliki muszą mieć prefiks, który jest leksykograficznie większy niż istniejące pliki. Poniżej przedstawiono kilka przykładów katalogów uporządkowanych leksykalnie.

Wersjonowane pliki

Usługa Delta Lake wykonuje zatwierdzenia w dziennikach transakcji tabel w porządku leksykalnym.

<path-to-table>/_delta_log/00000000000000000000.json
<path-to-table>/_delta_log/00000000000000000001.json <- guaranteed to be written after version 0
<path-to-table>/_delta_log/00000000000000000002.json <- guaranteed to be written after version 1
...

Usługa AWS DMS przekazuje pliki CDC do usługi AWS S3 w sposób wersjonowany.

database_schema_name/table_name/LOAD00000001.csv
database_schema_name/table_name/LOAD00000002.csv
...

Pliki podzielone według daty

Pliki można przekazać w formacie sformatowanym według dat. Oto kilka przykładów:

// <base-path>/yyyy/MM/dd/HH:mm:ss-randomString
<base-path>/2021/12/01/10:11:23-b1662ecd-e05e-4bb7-a125-ad81f6e859b4.json
<base-path>/2021/12/01/10:11:23-b9794cf3-3f60-4b8d-ae11-8ea320fad9d1.json
...

// <base-path>/year=yyyy/month=MM/day=dd/hour=HH/minute=mm/randomString
<base-path>/year=2021/month=12/day=04/hour=08/minute=22/442463e5-f6fe-458a-8f69-a06aa970fc69.csv
<base-path>/year=2021/month=12/day=04/hour=08/minute=22/8f00988b-46be-4112-808d-6a35aead0d44.csv <- this may be uploaded before the file above as long as processing happens less frequently than a minute

Podczas przesyłania plików z podziałem na daty należy pamiętać o następujących kwestiach:

  • Miesiące, dni, godziny i minuty muszą być uzupełnione zerami z przodu, aby zapewnić porządkowanie leksykalne (należy przekazać jako hour=03, zamiast hour=3 lub 2021/05/03 zamiast 2021/5/3).
  • Pliki nie muszą być przekazywane w porządku leksykalnym w najgłębszym katalogu, o ile przetwarzanie odbywa się rzadziej niż granularność czasowa katalogu nadrzędnego.

Niektóre usługi, które mogą przekazywać pliki w leksykalnej kolejności podzielonej według daty, to:

Zmień ścieżkę źródłową dla automatycznej ładowarki

W środowisku Databricks Runtime 11.3 LTS lub nowszym można zmienić ścieżkę wejściową katalogu dla modułu automatycznego ładowania skonfigurowanego z trybem listy katalogów bez konieczności wybierania nowego katalogu punktów kontrolnych.

Ostrzeżenie

Ta funkcja nie jest obsługiwana w trybie powiadomień plików. Jeśli używany jest tryb powiadamiania o plikach i zmieniona zostanie ścieżka, może dojść do błędu w przypadku pobierania plików, które już znajdują się w nowym katalogu w chwili jego aktualizacji.

Jeśli na przykład chcesz uruchomić codzienne zadanie pozyskiwania, które ładuje wszystkie dane ze struktury katalogów zorganizowanej według dnia, na przykład /YYYYMMDD/, możesz użyć tego samego punktu kontrolnego, aby śledzić informacje o stanie pozyskiwania w innym katalogu źródłowym każdego dnia przy zachowaniu informacji o stanie dla plików pozyskanych ze wszystkich wcześniej używanych katalogów źródłowych.