Udostępnij za pośrednictwem


Wysokie we/wy na etapie platformy 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 I/O column, aby zostać uznanymi za duże? Aby to ustalić, najpierw zacznij od najwyższej liczby w dowolnej z podanych columns. 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ększe I/O column przez liczbę rdzeni roboczych klastra, a następnie podziel wynik przez czas trwania w sekundach. Jeśli wynik wynosi około 3 MB, prawdopodobnie masz problemy z I/O. To byłoby wysokie we/wy.

Wysokie dane wejściowe

Jeśli widzisz dużo danych wejściowych w swoim etapie, oznacza to, że spędzasz dużo czasu na odczytywaniu danych. Najpierw zidentyfikuj, jakie dane odczytuje ten etap. Zobacz Identyfikowanie kosztownego odczytu wDAG platformy Spark.

Po zidentyfikowaniu określonych danych poniżej przedstawiono kilka metod przyspieszania operacji odczytu:

  • Użyj Delta.
  • Spróbuj Photon . Może znacznie poprawić szybkość odczytu, szczególnie w przypadku szerokiego tables.
  • 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.
  • Rozważ, jeśli wykonujesz join, spróbować getDFP.

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

Jeśli nie znasz mieszania, nadszedł czas, aby nauczyć się.

Brak intensywnego przetwarzania wejścia/wyjścia

Jeśli nie widzisz wysokiego we/wy w żadnej z columns, musisz zagłębić się głębiej. Zobacz powolny etap Spark z niewielkim I/O.