Spark-задача работает медленно
Вопрос
Ночная Spark-задача стала работать 4 часа вместо 1. Как будете искать причину?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Spark UI: какая стадия долгая, распределение времени задач, объёмы shuffle и spill
Перекос: максимум задач против медианы, горячие ключи
План через explain: стратегии джойнов, проталкивание фильтров, лишние shuffle
Рост данных и число партиций, мелкие файлы на входе
Изменения кода: UDF, collect, лишние действия без кеша
Ресурсы: память executors, GC, spill на диск
Что могут спросить следом
- Что такое spill и почему он плох?
- Как поймать, что broadcast перестал срабатывать?
Разбор
Образцовый ответ: «Открываю Spark UI и нахожу долгую стадию. Смотрю распределение времени задач: если максимум в десятки раз больше медианы, это перекос, ищу горячий ключ и лечу через AQE skew join, broadcast или соление. Если все задачи долгие, смотрю объём shuffle и spill на диск: возможно, выросли данные, и 200 партиций по умолчанию стало мало, или executors не хватает памяти. Через explain проверяю план: не перестал ли срабатывать broadcast из-за роста справочника, проталкиваются ли фильтры в источник, нет ли лишних shuffle. Проверяю вход: тысячи мелких файлов тормозят чтение. И смотрю на последние изменения кода: Python UDF, collect, несколько действий без кеша. Сравниваю с прошлым быстрым запуском по истории в Spark History Server».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.