如何拆分大数据框并使用较小的部分在Spark中进行多个广播连接?

时间:2017-12-11 02:33:29

标签: scala apache-spark

我们假设我们有两个非常大的数据框--A和B.现在,我明白如果我为两个RDD使用相同的散列分区,然后进行连接,则密钥将位于同一位置并且连接减少改组可能会更快(当分区器在A和B上改变时,唯一的改组就会发生。)

我想尝试不同的东西 - 我想尝试广播连接 - >让我们说B小于A,所以我们选择B广播,但B仍然是一个非常大的数据帧。所以,我们想做的是从B中制作多个数据帧,然后将每个数据帧作为广播发送到A上。

有人试过吗? 要将一个数据框分成多个,我只看到了randomSplit方法,但看起来不是很好。

完成此任务还有其他更好的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

  

有没有人试过这个?

是的,有人已经尝试过了。特别是GoDataDriven。您可以在下面找到详细信息:

他们声称数据偏差很好,但是你必须考虑三个问题:

  

randomSplit方法,但看起来不是很好。

实际上并不坏。

  

完成此任务还有其他更好的方法吗?

您可以尝试按分区ID进行过滤。