Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Użyj poniższych strategii, aby zoptymalizować wydajność przekształceń w przepływach mapowania danych w potokach usługi Azure Data Factory i Azure Synapse Analytics.
Optymalizowanie sprzężeń, istnień i odnośników
Nadawania
W łączeniach, wyszukiwaniach i istniejących przekształceniach, jeśli jeden lub oba strumienie danych są wystarczająco małe, aby zmieścić się w pamięci węzła roboczego, możesz zoptymalizować wydajność, włączając funkcję Broadcasting. Emisja polega na wysyłaniu małych ramek danych do wszystkich węzłów w klastrze. Dzięki temu silnik Spark może wykonać łączenie bez przetasowania danych w dużym strumieniu. Domyślnie silnik Spark automatycznie decyduje, czy rozsyłać jedną stronę złączenia. Jeśli znasz dane przychodzące i wiesz, że jeden strumień jest mniejszy niż drugi, możesz wybrać opcję Emisja stała . Wymuszone nadawanie sprawia, że platforma Spark wymusza transmisję wybranego strumienia.
Jeśli rozmiar rozgłaszanych danych jest zbyt duży dla węzła Spark, może wystąpić błąd braku pamięci. Aby uniknąć błędów braku pamięci, użyj klastrów zoptymalizowanych pod kątem pamięci . Jeśli podczas wykonywania przepływu danych wystąpią przekroczenia limitu czasu emisji, możesz wyłączyć optymalizację emisji. Jednak powoduje to wolniejsze przepływy danych.
Podczas pracy ze źródłami danych, których zapytania mogą trwać dłużej, na przykład w przypadku dużych zapytań bazy danych, zaleca się wyłączenie transmisji dla sprzężeń. Źródło z długimi czasami zapytań może powodować przekroczenia limitu czasu Spark, gdy klaster próbuje rozgłaszać dane do węzłów obliczeniowych. Innym dobrym wyborem na wyłączenie emisji jest sytuacja, gdy w przepływie danych mamy strumień agregujący wartości, które będą używane później w przekształceniu wyszukiwania. Ten schemat może mylić optymalizator Spark i powodować przekroczenia limitu czasu.
Sprzężenia krzyżowe
Jeśli używasz wartości dosłownych w warunkach łączenia lub masz wiele dopasowań po obu stronach łączenia, Spark wykonuje łączenie jako łączenie krzyżowe. Sprzężenia krzyżowe to pełny produkt kartezjański, który następnie filtruje sprzężone wartości. Jest to wolniejsze niż inne typy sprzężeń. Upewnij się, że masz odwołania do kolumn po obu stronach warunków sprzężenia, aby uniknąć negatywnego wpływu na wydajność.
Sortowanie przed sprzężeniami
W przeciwieństwie do łączenia scalającego w narzędziach, takich jak SSIS, transformacja łączenia nie jest obowiązkową operacją scalania. Klucze łączenia nie wymagają sortowania przed przekształceniem. Używanie sortowania przekształceń w przepływach danych podczas mapowania nie jest zalecane.
Wydajność przekształcania okien
Przekształcenie okna w przepływie mapowania danych partycjonuje dane według wartości w kolumnach wybranych jako część over() klauzuli w ustawieniach przekształcania. Istnieje wiele popularnych funkcji agregujących i analitycznych, które są widoczne w transformacji systemu Windows. Jeśli jednak twoim przypadkiem użycia jest wygenerowanie okna dla całego zestawu danych na potrzeby klasyfikacji rank() lub numeru rowNumber() wiersza, zaleca się użycie przekształcenia Rankingu i przekształcenia Klucza zastępczego. Te przekształcenia lepiej wykonują pełne operacje na zestawach danych przy użyciu tych funkcji.
Ponowne partycjonowanie niesymetrycznych danych
Niektóre przekształcenia, takie jak sprzężenia i agregacje, przetasują partycje danych i mogą sporadycznie prowadzić do niesymetryczności danych. Niesymetryczne dane oznaczają, że dane nie są równomiernie dystrybuowane między partycjami. Znacznie zniekształcone dane mogą prowadzić do wolniejszych przekształceń podrzędnych i zapisów końcowych. Możesz sprawdzić niesymetryczność danych w dowolnym momencie przebiegu przepływu danych, klikając przekształcenie na ekranie monitorowania.
Na ekranie monitorowania pokazano, jak dane są rozmieszczane między każdą partycję, wraz z dwoma metrykami: skośnością i kurtozą. Niesymetryczność to miara asymetryczności danych i może mieć dodatnią, zero, ujemną lub niezdefiniowaną wartość. Ujemna skośność oznacza, że lewy ogon jest dłuższy niż prawy. Kurtosis jest miarą tego, czy dane są ciężkie, czy lekkie. Wysokie wartości kurtozy nie są pożądane. Idealne zakresy niesymetryczności leżą między -3 a 3 i zakresy kurtozy są mniejsze niż 10. Łatwym sposobem interpretacji tych liczb jest przyjrzenie się wykresowi partycji i sprawdzanie, czy 1 słupek jest większy niż reszta.
Jeśli dane nie są równomiernie partycjonowane po przekształceniu, możesz użyć karty Optymalizuj do ponownego partycjonowania. Przetasowanie danych zajmuje trochę czasu i może nie poprawić wydajności przepływu danych.
Wskazówka
Jeśli ponownie podzielisz dane, ale masz przekształcenia podrzędne, które przetasowały dane, użyj partycjonowania skrótów w kolumnie używanej jako klucz sprzężenia.
Uwaga / Notatka
Przekształcenia wewnątrz przepływu danych (z wyjątkiem przekształcenia typu Sink) nie modyfikują partycjonowania plików i folderów danych w stanie spoczynku. Partycjonowanie w każdej transformacji ponownie partycjonuje dane wewnątrz ramek tymczasowego bezserwerowego klastra Spark, zarządzanego przez usługę ADF, dla każdego wykonania przepływu danych.
Treści powiązane
- Omówienie wydajności przepływu danych
- Optymalizowanie źródeł
- Optymalizowanie ujścia
- Używanie przepływów danych w potokach
Zobacz inne artykuły dotyczące przepływu danych związane z wydajnością: