Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Następnie ponownie spójrz na statystyki operacji we/wy dla najdłuższego etapu.
Co to jest wysokie we/wy?
Ile danych musi znajdować się w kolumnie We/Wy, aby uznać je za duże? Aby to ustalić, najpierw zacznij od najwyższej liczby w dowolnej z podanych kolumn. Następnie należy wziąć pod uwagę łączną liczbę rdzeni procesora CPU we wszystkich naszych pracownikach. Ogólnie każdy rdzeń może odczytywać i zapisywać około 3 MB na sekundę.
Podziel największą kolumnę I/O przez liczbę rdzeni procesora roboczego klastra, a następnie podziel to przez długość w sekundach. Jeśli wynik wynosi około 3 MB, prawdopodobnie jesteś ograniczony przez operacje wejścia/wyjścia. To byłoby wysokie I/O.
Wysokie dane wejściowe
Jeśli widzisz dużo danych wejściowych na etapie, oznacza to, że poświęcasz dużo czasu na odczytywanie danych. Najpierw zidentyfikuj, jakie dane odczytuje ten etap. Zobacz Identyfikowanie kosztownego odczytu w DAG Spark.
Po zidentyfikowaniu określonych danych poniżej przedstawiono kilka metod przyspieszania operacji odczytu:
- Użyj Delta.
- Użyj płynnego klastrowania, aby uzyskać lepsze pomijanie danych. Zobacz Używaj płynnego grupowania dla tabel.
- Spróbuj Photon . Może to pomóc w dużej szybkości odczytu, zwłaszcza w przypadku szerokich tabel.
- Utwórz zapytanie bardziej selektywne, aby nie trzeba było odczytywać jak najwięcej danych.
- ponownie przemyśl układ danych, żeby omijanie danych było bardziej efektywne.
- Jeśli odczytujesz te same dane wielokrotnie, użyj pamięci podręcznej delta.
- Jeśli wykonujesz łączenie, rozważ uruchomienie DFP.
- Zwiększ rozmiar klastra lub użyj zasobów obliczeniowych bezserwerowych.
Wysokie dane wyjściowe
Jeśli widzisz dużo danych wyjściowych ze swojego etapu, oznacza to, że poświęcasz dużo czasu na zapisywanie danych. Poniżej przedstawiono kilka metod rozwiązywania tego problemu:
- Czy tworzysz ponownie dużo danych? Zobacz Jak określić, czy platforma Spark ponownie zapisywa dane do sprawdzenia. W przypadku ponownego zapisywania wielu danych:
- Sprawdź, czy masz scalanie , które należy zoptymalizować.
- Użyj wektorów usuwania, aby oznaczyć istniejące wiersze jako usunięte lub zmienione bez ponownego zapisywania pliku Parquet.
- Włącz funkcję Photon , jeśli jeszcze tego nie ma. Photon może znacznie pomóc w prędkości zapisu.
- Zwiększ rozmiar klastra lub użyj zasobów obliczeniowych bezserwerowych.
Intensywne tasowanie
Usługa Databricks zaleca ustawienie spark.sql.shuffle.partitions=auto , aby platforma Spark automatycznie wybierała liczbę optymalnych partycji mieszania. Jeśli nie jesteś zaznajomiony z tasowaniem, nadszedł czas, aby dowiedzieć się.
Brak intensywnego przetwarzania wejścia/wyjścia
Jeśli nie widzisz wysokiej aktywności we/wy w żadnej z kolumn, musisz bardziej zgłębić temat. Zobacz powolny etap Spark z niewielkim I/O.