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

DOTYCZY: Azure Data Factory Azure Synapse Analytics

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 dostrajania i optymalizowania przepływów danych w celu spełnienia wymagań 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 przekształcania 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, kliknij ikonę okularów w danych wyjściowych uruchomienia 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, dla których należy zwrócić uwagę:

  • Czas uruchamiania klastra
  • Odczytywanie ze źródła
  • Czas transformacji
  • 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 zwykle trwa 3–5 minut. W przypadku zadań sekwencyjnych można to zmniejszyć, włączając czas wygaśnięcia. Aby uzyskać więcej informacji, zobacz sekcję Czas wygaśnięcia w Integration Runtime wydajności.

Przepływy danych wykorzystują optymalizator 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, prawdopodobnie jest 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 interaktywne testowanie pod kątem dynamicznego klastra Spark. Dzięki temu można wyświetlać podgląd danych i wykonywać przepływy danych bez oczekiwania na rozgrzewkę 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ć zarówno pozytywny, jak 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 opcja Użyj bieżącego partycjonowania jest zaznaczona, co powoduje, że usługa zachowuje 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ą po agregacjach i sprzężeniach, które znacząco niesymetryczne dane lub podczas używania partycjonowania źródła w bazie danych SQL.

Aby zmienić partycjonowanie w dowolnej transformacji, wybierz kartę Optymalizacja 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 wolna operacja, która również znacząco wpływa na wszystkie przekształcenia podrzędne i zapisy. Ta opcja jest zdecydowanie odradzana, chyba że istnieje jawny powód biznesowy do jej użycia.

W każdej transformacji dostępne są następujące opcje partycjonowania:

Okrężnego

Działanie okrężne dystrybuuje dane równomiernie między partycjami. Używaj działania okrężnego, jeśli 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 w oparciu o podane kolumny lub wyrażenia. 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.

Klucz

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.

Porada

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

Poziom rejestrowania

Jeśli nie wymagasz 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łne" (ustawienie domyślne) żądasz, aby usługa w pełni rejestrowała aktywność na każdym poziomie partycji podczas przekształcania danych. Może to być kosztowna operacja, dlatego włączenie pełnej obsługi podczas rozwiązywania problemów może poprawić ogólny przepływ danych i wydajność potoku. Tryb "Podstawowy" będzie rejestrować tylko czasy trwania transformacji, podczas gdy "Brak" będzie zawierać tylko podsumowanie czasów trwania.

Logging level

Następne kroki

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