对于以下两个之间的连接DataFrames
在 Spark 1.6.0 中
val df0Rep = df0.repartition(32, col("a")).cache
val df1Rep = df1.repartition(32, col("a")).cache
val dfJoin = df0Rep.join(df1Rep, "a")
println(dfJoin.count)
这个连接是否不仅是共同分区的,而且是共同定位的?我知道对于 RDD,如果使用相同的分区器并在相同的操作中进行洗牌,则连接将位于同一位置。但是数据框呢?谢谢。
[https://medium.com/@achilleus/https-medium-com-joins-in-apache-spark-part-3-1d40c1e51e1c] https://medium.com/@achilleus/https-medium-com-joins-in-apache-spark-part-3-1d40c1e51e1c%5D
根据上面提供的文章链接 Sort-Merge join 是默认的 join,想添加重要的一点
为了获得排序合并连接的理想性能,重要的是所有
具有相同连接键值的行在同一行中可用
分割。这为臭名昭著的分区交换(shuffle)提供了保证
执行者之间。并置分区可以避免不必要的数据
洗牌。数据需要均匀分布在连接键中。这
连接键的数量足够唯一,因此它们可以相等
分布在整个集群中以实现最大并行度
可用分区
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)