TGViewer
Дата Инженер Лаб | Артём Подвальный Дата Инженер Лаб | Артём Подвальный @dataengineerlab · 1.87K subscribers
Post #106 1.38K
Что делать, если твой Spark-кластер из 200 воркеров работает как один 🐌

Запускаешь джобу на 200 воркеров, а вся нагрузка едет на одном узле, пока остальные 199 простаивают🥺

Это data skew - неравномерное распределение данных по партициям. Spark делит данные по ключу (обычно при join или groupBy), и если один ключ встречается в разы чаще остальных - весь воркер, который его обрабатывает, становится бутылочным горлышком. Время выполнения джобы определяет не средний воркер, а самый перегруженный.

Заметить просто: открой Spark UI - один или несколько тасков выполняются заметно дольше остальных, иногда доходит до OOM (out of memory) на конкретном экзекьюторе.

Что с этим делать 🤔

Adaptive Query Execution - начни отсюда ▶️

В Spark 3.x можно включить adaptive query execution со skew join handling прямо в конфиге. Spark сам на лету разобьёт перегруженные партиции. Закрывает большинство случаев без единой строчки кода.

Broadcast join, если одна таблица маленькая📊

Можно разослать маленький датасет на все экзекьюторы и обойтись без шаффла полностью. Часто проще и быстрее, чем что-либо солить.

Salting, если ничего не помогло🧂

Добавляешь к перегруженному ключу случайное число - соль. Один огромный партишн превращается в несколько поменьше. Для join большую таблицу солишь, а маленькую размножаешь под каждое значение соли. Это последний инструмент, не первый — усложняет код, и если есть способ попроще, лучше им и обойтись.

🔖полезно почитать дополнительно

Если было полезно, ставь 🔥
  • 🔥 9
  • ⚡ 3
  • 👍 3
  • ❤ 1
  • 😁 1
More from @dataengineerlab
  1. Sep 20, 2026Как вкатиться в Data Engineering с нуля? 🗺 Самая частая ошибка новичков- пытаться сразу в…
  2. Sep 17, 2026CDC и Debezium: как передавать изменения, а не выгружать всю таблицу заново? Допустим, зак…
  3. Sep 13, 2026Тебе тоже кажется, что забываешь быстрее, чем учишь? Недавно менти поделился проблемой: по…
  4. Sep 10, 2026Мини гайд по ИИ-агентам Агент снова забыл условия задачи, полез менять лишнее или написал…
  5. Sep 3, 2026До конца года 4 месяца. Что можно успеть? 📖 Лето закончили с сильными результатами: 13 ме…
  6. Aug 30, 2026Что такое векторные базы данных? Представим, что пользователь пишет📝: «Не проходит оплата…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →