【问题标题】:Spark colocated join between two partitioned dataframes两个分区数据帧之间的 Spark 并置连接
【发布时间】:2017-08-16 13:06:56
【问题描述】:

对于 Spark 1.6.0 中两个 DataFrames 之间的以下连接

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,如果使用相同的分区器并在相同的操作中进行混洗,则连接将位于同一位置。但是数据框呢?谢谢。

【问题讨论】:

标签: scala join apache-spark apache-spark-sql spark-dataframe


【解决方案1】:

[https://medium.com/@achilleus/https-medium-com-joins-in-apache-spark-part-3-1d40c1e51e1c]

根据上面提供的文章链接Sort-Merge join是默认的join,想补充一点

对于排序合并连接的理想性能,重要的是所有 具有相同连接键值的行在同一行中可用 划分。这保证了臭名昭著的分区交换(洗牌) 执行者之间。并置分区可以避免不必要的数据 洗牌。数据需要在连接键上均匀分布。这 连接键的数量足够唯一,因此它们可以相等 分布在集群中以实现最大并行度 可用分区

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 2022-01-04
    • 2019-01-27
    • 1970-01-01
    • 2019-02-01
    • 2016-10-19
    • 2019-12-06
    相关资源
    最近更新 更多