Spark join *不*随机播放

Joh*_*ter 5 scala apache-spark

我正在尝试优化我的 Spark 应用程序工作。

我试图理解这个问题的要点:如何在唯一键上加入 DataFrames 时避免洗牌?

  1. 我已确保必须进行连接操作的键分布在同一分区内(使用我的自定义分区器)。

  2. 我也无法进行广播连接,因为根据情况我的数据可能会变大。

  3. 在上述问题的答案中,重新分区仅优化连接,但我需要的是不进行混洗的连接。我对分区内键的帮助下的连接操作很满意。

是否可以?如果类似的功能不存在,我想实现类似 joinperpartition 的功能。

sha*_*y__ 4

重新分区仅优化连接,但我需要的是不进行随机连接的连接

这不是真的。重新分区不仅“优化”连接。重新分区将 a 绑定Partitioner到 RDD,这是映射侧连接的关键组件。

我已确保必须进行连接操作的键分布在同一分区内

Spark一定知道这一点。使用适当的 api 构建您的 DataFrame,以便它们具有相同的Partitioner,spark 将处理其余的事情。