如果我执行 A.leftOuterJoin(B),其中 A 是一个具有 10 亿个元素的 RDD[(K, V)],B 是一个具有 1000 个元素的 RDD[(K, W)],Spark 是否仍会复制A 的 10 亿个元素中的每一个都添加到新的 RDD 中?
最佳答案
上次我查看内部代码时,Join 是基于 coGroup() 的。
本质上,两个 RDD 都将通过它们的键进行混洗(通过网络),然后每个键的本地内存中将发生哈希连接。如果由于任何原因分区已经由您的 key 进行,则不会发生额外的随机播放。
至于“复制元素”,我不这么认为,应该复制本地指针,但不会存储前一阶段的中间结果,除非您手动保存它们。
关于apache-spark - Spark中leftOuterJoin的性能如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29154185/