Влияет ли количество разделов всех объединяемых таблиц на максимальных исполнителей? - PullRequest
0 голосов
/ 04 марта 2019

У меня Spark SQL как

select ...
from A 
join B on A.k = B.k
join C on A.k = C.k

A имеет 2k разделов;B имеет 7 разделов;в то время как C. не разделен.

Я установил максимальный динамический номер исполнителя равным 50. Однако приложение получило <20 исполнителей.Когда два этапа выполняются параллельно, один этап использует 5 исполнителей, а другой - 6. </p>

Стоит ли увеличивать номера разделов B и C, чтобы распараллелить запрос больше?

1 Ответ

0 голосов
/ 04 марта 2019

Определенно, есть влияние из-за неравномерных разделов, и они: Меньше параллелизма - вы не используете преимущества параллелизма.Могут быть рабочие узлы, которые сидят идеально.Перекос данных и неправильное использование ресурсов.Ваши данные могут быть искажены в одном разделе, и, следовательно, ваш один работник может делать больше, чем другие работники, и, следовательно, у этого работника могут возникнуть проблемы с ресурсами.

Поскольку существует компромисс между количеством разделов, они должны бытьв правильном числе, иначе планирование задач может занять больше времени, чем фактическое время выполнения.Обычно у вас должно быть от 100 до 10 тыс. Разделов в зависимости от размера кластера и данных.

Нижняя граница - 2 X число ядер в кластере, доступных для приложения Верхняя граница - задача должна занять более 100 мсек.занимает меньше времени, чем разделенные данные слишком малы, и ваше приложение может тратить больше времени на планирование задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...