Udostępnij przez


Wysokie I/O na etapie Spark

Następnie ponownie spójrz na statystyki operacji we/wy dla najdłuższego etapu.

długi etap I/O

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:

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:

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.