sparksqljoin在使用df.repartition与读入并使用分区Parquet地板时给出了不同的执行时间

vof42yt1  于 2021-09-08  发布在  Java
关注(0)|答案(0)|浏览(139)

我正在对一个公共id上的两个 Dataframe 进行广播哈希连接。
我注意到当我尝试时 DataFrame.repartition("id") 并将 Dataframe 传递到 JOIN 查询时,执行时间比使用 DataFrame.write.partitionBy("id") ,然后将Parquet作为 Dataframe 读入,然后将其传递到查询中。
为什么重新划分数据框与从分区Parquet地板读取数据框之间存在差异?
当我调用时,第一种情况和第二种情况都有相同数量的分区 df.rdd.getNumPartitions() ,并根据 id 专栏。
对于 DataFrame.repartition("id") 查询时间为三分钟,总共需要七个阶段的三个作业。
对于分割成Parquet地板,查询时间为一分钟,包含一个作业和一个阶段。
1个数据集为41 mil行,而另一个数据集为2 mil行。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题