Я запускаю приложение Spark с 5 исполнителями с 5 ядрами на каждого исполнителя. Однако я заметил, что большая часть работы выполняет только один исполнитель (т. Е. Большинство задач выполняются там). Работы, которые я запускаю, очень параллельны (20 разделов или больше). Как вы объясните это поведение?Spark: Оптимальное использование исполнителей
Даже если я уменьшу количество ядер на каждого исполнителя, результаты просто уменьшат количество задач на одном исполнителе одновременно. Должен ли я ограничивать память для каждого исполнителя, чтобы использовать больше исполнителей (на всякий случай, если все данные соответствуют одному исполнителю)?
Это зависит от преобразований и набора данных, над которыми вы работаете. Пример, если ваши данные (1,2), (2,2), (1,3), (1,9) (1,10) и вы делаете сокращениеByKey, все ваши данные с ключом «1» будут в одном исполнитель. – Knight71
Простые преобразования и действия, такие как df.map (lambda x: x) .count(), похоже, работают на одном и том же исполнителе. Таким образом, никакой ключ не задействован. –
может помочь небольшой фрагмент кода и примеры данных. – Knight71