gpt4 book ai didi

scala - 在 Apache Spark 中使用 join 时,数据集大小的组织是否重要?

转载 作者:行者123 更新时间:2023-12-03 17:31:35 27 4
gpt4 key购买 nike

我有两个想要加入的 RDD。一个很大,XL另一个是常规尺寸,M .为了速度,我加入他们的顺序是否重要?例如:

val data = M.join(XL)

对比
val data =XL.join(M)

最佳答案

在“核心”Spark 上,如果您使用 join ,顺序无关紧要。但是您可以使用广播变量优化连接并使用 map 进行连接。

val bcSmallData = sc.broadcast(sRDD)
xlRDD.map{ case (k,v) => (k,(v, scSmallData.value.get(k)))}

看到这个 'Advanced Spark'演示文稿以获得详细说明。

现在,如果您使用 SparkSQL,此优化会自动为您完成。有一个配置选项 ( spark.sql.autoBroadcastJoinThreshold) 可以控制要广播的较小表的阈值大小。加入的顺序无关紧要。查询优化器将查看 RDD 大小。

关于scala - 在 Apache Spark 中使用 join 时,数据集大小的组织是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29300878/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com