Udostępnij za pośrednictwem


Automatyczne ładowanie — często zadawane pytania

Często zadawane pytania dotyczące automatycznego modułu ładującego usługi Databricks.

Czy moduł automatycznego ładowania ponownie przetwarza plik, gdy plik zostanie dołączony lub zastąpiony?

Pliki są przetwarzane dokładnie raz, chyba że cloudFiles.allowOverwrites jest włączona. Gdy plik jest dołączany do lub zastępowany, usługa Azure Databricks nie może zagwarantować, która wersja pliku zostanie przetworzona. Należy również zachować ostrożność podczas włączania cloudFiles.allowOverwrites w trybie powiadamiania o plikach, w którym moduł automatycznego ładowania może identyfikować nowe pliki za pośrednictwem powiadomień o plikach i listy katalogów. Ze względu na rozbieżność między czasem zdarzenia powiadomienia pliku a czasem modyfikacji pliku program auto ładujący może uzyskać dwa różne znaczniki czasu, a w związku z tym pozyskać ten sam plik dwa razy, nawet jeśli plik jest zapisywany tylko raz.

Ogólnie rzecz biorąc, usługa Databricks zaleca używanie modułu automatycznego ładującego do pozyskiwania tylko niezmiennych plików i unikania ustawienia cloudFiles.allowOverwrites. Jeśli nie spełnia to Twoich wymagań, skontaktuj się z zespołem konta usługi Azure Databricks.

Jeśli moje pliki danych nie docierają stale, ale w regularnych odstępach czasu, na przykład raz dziennie, czy nadal należy używać tego źródła i czy istnieją jakieś korzyści?

W takim przypadku można skonfigurować zadanie przesyłania strumieniowego ze strukturą Trigger.AvailableNow (dostępne w środowisku Databricks Runtime 10.4 LTS lub nowszym) i zaplanować uruchamianie po przewidywanym czasie przybycia pliku. Automatyczne ładowanie działa dobrze zarówno w przypadku rzadkich, jak i częstych aktualizacji. Nawet jeśli aktualizacje ostateczne są bardzo duże, moduł ładujący automatycznie skaluje się do rozmiaru wejściowego. Wydajne techniki odnajdywania plików i możliwości ewolucji schematu automatycznego modułu ładującego sprawiają, że automatyczne ładowanie jest zalecaną metodą pozyskiwania danych przyrostowych.

Co się stanie, jeśli zmienię lokalizację punktu kontrolnego podczas ponownego uruchamiania strumienia?

Lokalizacja punktu kontrolnego utrzymuje ważne informacje identyfikujące strumień. Zmiana lokalizacji punktu kontrolnego oznacza, że porzucino poprzedni strumień i uruchomiono nowy strumień.

Czy należy wcześniej utworzyć usługi powiadomień o zdarzeniach?

L.p. Jeśli wybierzesz tryb powiadomień plików i podasz wymagane uprawnienia, automatycznie ładujący może utworzyć usługi powiadomień o plikach. Zobacz Co to jest tryb powiadomień pliku automatycznego ładowania?

Jak mogę czyścić zasoby powiadomień o zdarzeniach utworzone przez moduł automatycznego ładowania?

Możesz użyć menedżera zasobów w chmurze, aby wyświetlić listę i usunąć zasoby. Te zasoby można również usunąć ręcznie przy użyciu interfejsu użytkownika lub interfejsów API dostawcy usług w chmurze.

Czy można uruchamiać wiele zapytań przesyłania strumieniowego z różnych katalogów wejściowych w tym samym zasobniku/kontenerze?

Tak, o ile nie są katalogami nadrzędny-podrzędny; na przykład i prod-logs/usage/ nie działa, prod-logs/ ponieważ /usage jest katalogiem /prod-logspodrzędnym .

Czy mogę użyć tej funkcji, gdy istnieją powiadomienia o plikach w zasobniku lub kontenerze?

Tak, o ile katalog wejściowy nie powoduje konfliktu z istniejącym prefiksem powiadomień (na przykład powyższym katalogiem nadrzędny-podrzędny).

W jaki sposób schemat wnioskowania automatycznego modułu ładującego?

Gdy ramka danych jest najpierw zdefiniowana, narzędzie do automatycznego ładowania wyświetla katalog źródłowy i wybiera najnowszy (według czasu modyfikacji pliku) 50 GB danych lub 1000 plików i używa ich do wnioskowania schematu danych.

Moduł automatycznego ładowania wywnioskuje również kolumny partycji, sprawdzając strukturę katalogu źródłowego i wyszukują ścieżki plików zawierające /key=value/ strukturę. Jeśli katalog źródłowy ma niespójną strukturę, na przykład:

base/path/partition=1/date=2020-12-31/file1.json
// inconsistent because date and partition directories are in different orders
base/path/date=2020-12-31/partition=2/file2.json
// inconsistent because the date directory is missing
base/path/partition=3/file3.json

Moduł automatycznego ładowania wywnioskuje kolumny partycji jako puste. Użyj polecenia cloudFiles.partitionColumns , aby jawnie analizować kolumny ze struktury katalogów.

Jak działa moduł automatycznego ładowania, gdy folder źródłowy jest pusty?

Jeśli katalog źródłowy jest pusty, moduł automatycznego ładowania wymaga podania schematu, ponieważ nie ma danych do wnioskowania.

Kiedy program Autoloader wnioskował schemat? Czy zmienia się automatycznie po każdej mikrosadowej partii?

Schemat jest wnioskowany, gdy ramka danych jest najpierw zdefiniowana w kodzie. Podczas każdej mikrosadowej zmiany schematu są oceniane na bieżąco; w związku z tym nie musisz martwić się o trafienia wydajności. Po ponownym uruchomieniu strumienia pobiera on ewoluowany schemat z lokalizacji schematu i rozpoczyna wykonywanie bez jakichkolwiek narzutów z wnioskowania.

Jaki jest wpływ na wydajność pozyskiwania danych podczas korzystania z wnioskowania schematu modułu automatycznego ładowania?

Wnioskowanie schematu powinno potrwać kilka minut w przypadku bardzo dużych katalogów źródłowych podczas wnioskowania początkowego schematu. Nie należy obserwować znaczących trafień wydajności w przeciwnym razie podczas wykonywania strumienia. Jeśli uruchomisz kod w notesie usługi Azure Databricks, zobaczysz aktualizacje stanu określające, kiedy moduł automatycznego ładowania będzie wyświetlać katalog na potrzeby próbkowania i wnioskowania schematu danych.

Ze względu na usterkę zły plik drastycznie zmienił schemat. Co należy zrobić, aby wycofać zmianę schematu?

Skontaktuj się z pomocą techniczną usługi Databricks, aby uzyskać pomoc.