分区和spark.sql.shuffle.partition中的Spark差异

时间:2019-04-05 01:30:05

标签: java apache-spark dataframe apache-spark-sql

我正在使用--conf spark.sql.shuffle.partitions=100

运行spark程序

内部应用程序中,我具有以下内容

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));

我大约有500万用户,我想为每个用户排序数据并为每个用户执行一些逻辑。

我的问题是,这会将数据划分为500万个分区还是100个分区?每个用户的执行方式如何?

1 个答案:

答案 0 :(得分:0)

df.repartition(df.col("enriched_usr_id"))将使用riched_usr_id将数据划分为100个分区(spark.sql.shuffle.partitions),这意味着多个用户将位于同一分区中。