Spark - детальное представление об использовании памяти исполнителем
Я унаследовал неприятный фрагмент итеративного кода TSQL, который должен быть запущен на спарк.
Я не буду утомлять вас слишком многими деталями, но код применяет скользящее 10-дневное окно в течение четырехмесячного периода от minDate до maxdate и применяет исправления.
Общий размер 4-месячного периода, хранящегося в Hive в формате Parquet, составляет около 12 ГБ, поэтому он невелик. Предполагая равномерное распределение данных Один день данных составляет около 100 МБ.
Алгоритм применяется дважды, чтобы избежать накладных расходов на запись на диск, который я кеширую каждый день и сохраняю как глобальное временное представление, когда эта дата выпадает из конца десятидневного окна. Эти временные представления также отбрасываются при первой же возможности.
Каждый исполнитель имеет 32 ГБ памяти, но я вижу, что моя работа не удалась, потому что это превышено.
Итак, мои вопросы:
Можно ли получить более детальное представление о памяти исполнителя, чем в Spark UI, чтобы я мог видеть, что может быть причиной проблемы.
Я предполагаю, что глобальные временные представления хранятся у нескольких исполнителей, если они разделены. Это тот случай? Есть ли что-то еще, что мне нужно знать, например, различия в коэффициентах сжатия между форматами Parquet и Hive, используемые при сохранении глобальных временных представлений?