Поделиться через


Высокий уровень ввода-вывода Spark

Затем просмотрите статистику ввода-вывода самой длинной стадии еще раз:

длинный этап ввода-вывода

Что такое высокая производительность ввода-вывода?

Какой объём данных должен быть в столбце ввода-вывода, чтобы его считали большим? Чтобы выяснить это, сначала начните с наибольшего числа в любом из указанных столбцов. Затем рассмотрите общее количество ядер процессоров, имеющихся у всех наших работников. Обычно каждое ядро может читать и записывать около 3 МБ в секунду.

Разделите ваш самый большой столбец ввода-вывода на количество рабочих ядер кластера, а затем разделите это значение на продолжительность в секундах. Если результат составляет около 3 МБ, возможно, вы ограничены скоростью ввода-вывода. Это было бы высоким количеством операций ввода-вывода.

Высокий уровень входных данных

Если вы видите много входных данных в вашем процессе, это означает, что вы тратите много времени на чтение данных. Сначала определите, какие данные на этом этапе считывают. См. идентификацию дорогостоящей операции чтения в DAG Spark.

После определения конкретных данных ниже приведены некоторые подходы к ускорению операций чтения:

  • Используйте Delta.
  • Попробуйте Фотон. Это может значительно помочь с увеличением скорости чтения, особенно для широких таблиц.
  • Сделайте запрос более выборочным, чтобы не нужно было считывать столько данных.
  • Пересмотрите структуру данных, чтобы пропуск данных был более эффективным.
  • Если вы считываете одни и те же данные несколько раз, используйте дельта-кэш.
  • Если вы выполняете присоединение, попробуйте задействовать DFP.

Высокие выходные данные

Если вы видите много выходных данных на вашем этапе, это означает, что вы тратите много времени на то, чтобы писать данные. Ниже приведены некоторые подходы к решению этой проблемы:

Высокая перетасовка

Если вы не знакомы с перетасовкой, сейчас самое время учиться.

Нет высокой интенсивности ввода-вывода

Если вы не видите высокий уровень ввода-вывода ни в одном из столбцов, вам нужно исследовать подробнее. См. этап Slow Spark с небольшими вводом/выводом.