Przewodnik dotyczący wydajności i dostrajania przepływów danych mapowania

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Napiwek

Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !

Przepływy mapowania danych w potokach usług Synapse i Azure Data Factory zapewniają niewymagający użycia kodu interfejs do projektowania i uruchamiania przekształceń danych na dużą skalę. Jeśli nie znasz tematyki przepływów mapowania danych, zobacz Omówienie przepływu mapowania danych. W tym artykule przedstawiono różne sposoby dostosowywania i optymalizowania przepływów danych w celu spełnienia testów porównawczych wydajności.

Obejrzyj poniższy film wideo, aby zobaczyć, jak pokazano kilka przykładowych chronometrażów przekształcania danych za pomocą przepływów danych.

Monitorowanie wydajności przepływu danych

Po zweryfikowaniu logiki transformacji przy użyciu trybu debugowania uruchom kompleksowe działanie przepływu danych w potoku. Przepływy danych są operacjonalizowane w potoku przy użyciu działania wykonywania przepływu danych. Działanie przepływu danych ma unikatowe środowisko monitorowania w porównaniu z innymi działaniami, które wyświetlają szczegółowy plan wykonania i profil wydajności logiki przekształcania. Aby wyświetlić szczegółowe informacje o monitorowaniu przepływu danych, wybierz ikonę okularów w danych wyjściowych przebiegu działania potoku. Aby uzyskać więcej informacji, zobacz Monitorowanie przepływów danych mapowania.

Data Flow Monitor

Podczas monitorowania wydajności przepływu danych istnieją cztery możliwe wąskie gardła do wyszukania:

  • Czas uruchamiania klastra
  • Odczytywanie ze źródła
  • Czas przekształcania
  • Zapisywanie w ujściu

Data Flow Monitoring

Czas uruchamiania klastra to czas potrzebny na uruchomienie klastra Apache Spark. Ta wartość znajduje się w prawym górnym rogu ekranu monitorowania. Przepływy danych są uruchamiane w modelu just in time, w którym każde zadanie używa izolowanego klastra. Ten czas uruchamiania zazwyczaj trwa od 3 do 5 minut. W przypadku zadań sekwencyjnych czas uruchamiania można zmniejszyć, włączając czas wygaśnięcia. Aby uzyskać więcej informacji, zobacz sekcję Czas wygaśnięcia w temacie Wydajność środowiska Integration Runtime.

Przepływy danych korzystają z optymalizatora platformy Spark, który zmienia kolejność i uruchamia logikę biznesową w "etapach", aby wykonać tak szybko, jak to możliwe. Dla każdego ujścia, do którego zapisuje się przepływ danych, dane wyjściowe monitorowania zawierają listę czasu trwania każdego etapu transformacji wraz z czasem zapisywania danych w ujściu. Czas, który jest największy, jest prawdopodobnie wąskim gardłem przepływu danych. Jeśli etap transformacji, który zajmuje największe miejsce, zawiera źródło, warto przyjrzeć się dalszej optymalizacji czasu odczytu. Jeśli transformacja trwa długo, może być konieczne ponowne partycjonowanie lub zwiększenie rozmiaru środowiska Integration Runtime. Jeśli czas przetwarzania ujścia jest duży, może być konieczne skalowanie bazy danych w górę lub sprawdzenie, czy dane wyjściowe nie są zwracane do pojedynczego pliku.

Po zidentyfikowaniu wąskiego gardła przepływu danych użyj poniższych strategii optymalizacji, aby zwiększyć wydajność.

Testowanie logiki przepływu danych

Podczas projektowania i testowania przepływów danych z interfejsu użytkownika tryb debugowania umożliwia interakcyjne testowanie względem dynamicznego klastra Spark, co umożliwia wyświetlanie podglądu danych i wykonywanie przepływów danych bez oczekiwania na rozgrzanie klastra. Aby uzyskać więcej informacji, zobacz Tryb debugowania.

Karta optymalizacji

Karta Optymalizacja zawiera ustawienia służące do konfigurowania schematu partycjonowania klastra Spark. Ta karta istnieje w każdej transformacji przepływu danych i określa, czy chcesz ponownie partycjonować dane po zakończeniu transformacji. Dostosowanie partycjonowania zapewnia kontrolę nad rozkładem danych między węzłami obliczeniowymi i optymalizacjami lokalności danych, które mogą mieć pozytywny i negatywny wpływ na ogólną wydajność przepływu danych.

Screenshot shows the Optimize tab, which includes Partition option, Partition type, and Number of partitions.

Domyślnie wybrano opcję Użyj bieżącej partycjonowania, która instruuje, aby usługa zachowywała bieżące partycjonowanie danych wyjściowych przekształcenia. Ponieważ ponowne partycjonowanie danych zajmuje trochę czasu, w większości scenariuszy zaleca się używanie bieżącego partycjonowania . Scenariusze, w których można ponownie podzielić dane, obejmują agregacje i sprzężenia, które znacząco niesymetryczne dane lub podczas partycjonowania źródłowego w bazie danych SQL.

Aby zmienić partycjonowanie w dowolnej transformacji, wybierz kartę Optymalizowanie i wybierz przycisk radiowy Ustaw partycjonowanie . Zostanie wyświetlona seria opcji partycjonowania. Najlepsza metoda partycjonowania różni się w zależności od woluminów danych, kluczy kandydatów, wartości null i kardynalności.

Ważne

Pojedyncza partycja łączy wszystkie rozproszone dane w jedną partycję. Jest to bardzo niska operacja, która również znacząco wpływa na wszystkie przekształcenia podrzędne i zapisy. Ta opcja jest zdecydowanie zniechęcona, chyba że istnieje jawny powód biznesowy, aby go użyć.

Następujące opcje partycjonowania są dostępne w każdej transformacji:

Działanie okrężne

Działanie okrężne dystrybuuje dane równomiernie między partycjami. Używaj działania okrężnego, gdy nie masz dobrych kluczowych kandydatów do zaimplementowania solidnej, inteligentnej strategii partycjonowania. Można ustawić liczbę partycji fizycznych.

Skrót

Usługa tworzy skrót kolumn w celu utworzenia jednolitych partycji, tak aby wiersze z podobnymi wartościami spadły w tej samej partycji. Jeśli używasz opcji Skrót, przetestuj możliwe niesymetryczność partycji. Można ustawić liczbę partycji fizycznych.

Zakres dynamiczny

Zakres dynamiczny używa zakresów dynamicznych platformy Spark na podstawie kolumn lub wyrażeń, które podajesz. Można ustawić liczbę partycji fizycznych.

Stały zakres

Utwórz wyrażenie, które zapewnia stały zakres wartości w kolumnach danych partycjonowanych. Aby uniknąć niesymetryczności partycji, przed użyciem tej opcji należy dobrze zrozumieć dane. Wartości wprowadzone dla wyrażenia są używane jako część funkcji partycji. Można ustawić liczbę partycji fizycznych.

Key

Jeśli dobrze rozumiesz kardynalność danych, partycjonowanie kluczy może być dobrą strategią. Partycjonowanie kluczy tworzy partycje dla każdej unikatowej wartości w kolumnie. Nie można ustawić liczby partycji, ponieważ liczba jest oparta na unikatowych wartościach w danych.

Napiwek

Ręczne ustawianie schematu partycjonowania powoduje przetasowanie danych i może zrównoważyć korzyści optymalizatora platformy Spark. Najlepszym rozwiązaniem jest ręczne ustawienie partycjonowania, chyba że jest to konieczne.

Poziom rejestrowania

Jeśli nie potrzebujesz każdego wykonania potoku działań przepływu danych, aby w pełni rejestrować wszystkie pełne dzienniki telemetrii, możesz opcjonalnie ustawić poziom rejestrowania na "Podstawowy" lub "Brak". Podczas wykonywania przepływów danych w trybie pełnej (ustawienie domyślne) żądasz, aby usługa w pełni rejestrowała aktywność na każdym poziomie poszczególnych partycji podczas przekształcania danych. Może to być kosztowna operacja, więc włączenie pełnej informacji podczas rozwiązywania problemów może poprawić ogólny przepływ danych i wydajność potoku. Tryb "Podstawowy" rejestruje tylko czasy trwania transformacji, podczas gdy "Brak" będzie zawierać tylko podsumowanie czasów trwania.

Logging level

Zobacz inne artykuły Przepływ danych związane z wydajnością: