Как настроить количество разделов, не превышающее доступных ядер? - PullRequest
1 голос
/ 28 октября 2019

Я ищу способ разделить все мои фреймы данных в моем приложении по размеру доступного ядра. Если мои доступные ядра (количество исполнителей * количество ядер на одного исполнителя) равны 20, то я хочу перераспределить всемой фрейм данных до 20 ..

Единственный способ, которым я могу увидеть перераспределение моего фрейма данных, - df.repartition(20), но я хочу применить это для всех фреймов данных, которые существуют в моем приложении, без необходимости писать df.repartition(20) для каждогоdataframe.

Изменение параметра spark.default.parallelism не работает, поскольку он применяется только тогда, когда вы работаете с RDD (API нижнего уровня), а не с фреймом данных ..

Есть ли какие-либо предложения по этому поводу?

1 Ответ

1 голос
/ 28 октября 2019

Если вы используете DataFrame / Dataset API, то вы можете установить количество разделов в случайном порядке по умолчанию, используя эту директиву конфигурации:

spark.sql.shuffle.partitions

Подробнее об этих параметрах конфигурации вы можете прочитать подробнеена странице Performance Tuning .

При использовании этого параметра конфигурации любое преобразование, которое вызывает случайное перемешивание данных, автоматически перераспределяет данные на это количество разделов.

...