Spark数据帧分区计数

时间:2018-06-07 03:21:03

标签: apache-spark dataframe

我对spark如何在spark数据帧中创建分区感到困惑。以下是步骤列表和分区大小

i_df = sqlContext.read.json("json files")  // num partitions returned is 4, total records 7000
p_df = sqlContext.read.format("csv").Other options   // num partitions returned is 4 , total records: 120k
j_df = i_df.join(p_df, i_df.productId == p_df.product_id) // total records 7000, but num of partitions is 200

前两个数据帧有4个分区,但只要我加入它们就会显示200个分区。我原以为它会在加入后制作4个分区,但为什么它会显示200个分区。

我在本地运行它     conf.setIfMissing(“spark.master”,“local [4]”)

2 个答案:

答案 0 :(得分:4)

200是默认的随机分区大小。您可以通过设置spark.sql.shuffle.partitions

来更改它

答案 1 :(得分:0)

当您加入时,数据将在各个分区之间乱序排列,因此在这种情况下,默认分区号(spark.sql.shuffle.partitions)将优先于实际分区数。 您可以使用重新分区或合并来调整分区。

也不要忘记使用glom()来查看您的数据是否均匀分布。如果您需要语法或其他更多信息,请告诉我。