Перекос данных — главная проблема больших join'ов. AQE skewJoin, salting, two-phase aggregation, отделение горячих ключей.
Почему job тормозит: spill и skew. Как диагностировать, как лечить через AQE, salting, two-phase aggregation.
Ключевые темы: spill, skew, shuffle, salting, AQE skew join, two-phase aggregation.
Перекос данных (data skew) — это ситуация в распределённых вычислениях, когда данные распределяются между узлами неравномерно: часть ключей встречается несопоставимо чаще остальных. В результате один или несколько обработчиков получают непропорционально большой объём работы, а остальные простаивают. Из-за этого общая задача упирается в самый загруженный узел, замедляется и иногда падает по памяти. Перекос особенно заметен при группировках и соединениях по ключу с сильно неоднородным распределением значений.
Где применяется в аналитике: Проявляется в Spark и других движках при агрегациях и join по полям вроде идентификатора города, категории или пользователя, где есть доминирующие значения. Аналитику важно распознавать перекос, когда тяжёлый запрос на больших данных висит из-за нескольких «горячих» ключей, чтобы понимать причину медленной обработки.
На собеседовании: Спрашивают, чтобы оценить понимание того, как реально устроены распределённые вычисления, а не только синтаксис запросов. Смотрят, умеет ли кандидат объяснить, откуда берётся неравномерная нагрузка и почему отдельные задачи становятся узким местом.
В Pro-подписке по этому конспекту получите: