Spark Разница в перераспределении и spark.sql.shuffle.partition - PullRequest
1 голос
/ 05 апреля 2019

Я запускаю программу зажигания с --conf spark.sql.shuffle.partitions=100

Внутри приложения у меня есть следующее

Dataset<Row> df_partitioned = df.repartition(df.col("enriched_usr_id"));
df_partitioned = df_partitioned.sortWithinPartitions(df_partitioned.col("transaction_ts"));
df_partitioned.mapPartitions(
    SparkFunctionImpl.mapExecuteUserLogic(), Encoders.bean(Transformed.class));

У меня около 5 миллионов пользователей, и я хочу отсортировать данные для каждого пользователя и выполнить некоторую логику для каждого пользователя.

Мой вопрос заключается в том, разделяет ли это данные на 5 миллионов или 100 разделов и как работает выполнение для каждого пользователя.

1 Ответ

0 голосов
/ 05 апреля 2019

df.repartition(df.col("enriched_usr_id")) будет использовать enriched_usr_id для разделения данных на 100 разделов (spark.sql.shuffle.partitions), что означает, что несколько пользователей будут в одном разделе.

...