我正在对一个公共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行。
暂无答案!
目前还没有任何答案,快来回答吧!