Spark-如何以最少的随机排列对列重新划分数据帧?

时间:2019-02-07 18:08:41

标签: apache-spark apache-spark-sql

我们有多个数据框。

一个数据框是主数据框,它使用左外连接与其他数据框连接。 所有这些数据帧都连接在4列上(例如col1,col2,col3,col4)。

为减少数据混乱,目前,我们正在对4个连接列上的所有数据框进行重新分区,然后再将这些数据框(左外)连接起来。

是否有更好的方法来联接/重新划分这些数据帧,以使数据混洗最少?

谢谢

2 个答案:

答案 0 :(得分:0)

重新分区将避免混洗,它将优化连接。如果两个数据框都很大,并且大小都不足以容纳广播散列联接的内存,则可以将数据框另存为存储桶表,然后可以执行排序合并联接。这样,您可以跳过通常在连接两个大数据框之前发生的排序阶段混洗。.请参见下面的链接Spark join *without* shuffle。该技术仅在必须多次连接同一数据框时才有用。还会给您的应用程序带来一些开销。

答案 1 :(得分:0)

最近回复我的帖子。 我们最终使用广播。

我们从两个数据帧中删除了重新分区,并广播了较小的数据帧。