Я запускаю потоковое приложение Spark с двумя рабочими. Приложение имеет операции соединения и объединения.
Все пакеты завершаются успешно, но было замечено, что метрики разлива случайного воспроизведения не согласуются с размером входных или выходных данных (разлив памяти более чем в 20 раз).
Пожалуйста, найдите детали этапа искры на изображении ниже:
Изучив это, выяснилось, что
Перемешивание происходит, когда недостаточно памяти для перемешивания данных.
Shuffle spill (memory)
- размер десериализованной формы данных в памяти на момент сброса
shuffle spill (disk)
- размер сериализованной формы данных на диске после разлива
Поскольку десериализованные данные занимают больше места, чем сериализованные данные. Итак, Shuffle spill (память) больше.
Заметил, что этот размер разлитой памяти невероятно велик при больших входных данных.
Мои запросы:
Сильно ли сказывается это разливание на производительности?
Как оптимизировать это разлив памяти и диска?
Есть ли какие-либо свойства искры, которые могут уменьшить / контролировать это огромное разливание?