如果我执行A.leftOuterJoin(B),其中A是具有10亿个元素的RDD [(K,V)],B是具有1000个元素的RDD [(K,W)],Spark仍然会复制A到新RDD的10亿个元素中的每一个?
答案 0 :(得分:2)
上次我查看内部代码时,Join基于coGroup()。
基本上,两个RDD将通过其密钥进行混洗(跨网络),然后在本地内存中为每个密钥进行散列连接。如果由于任何原因分区已经是您的密钥,则不会发生额外的随机播放。
至于#34;复制元素"我不这么认为,应该复制本地指针,但是除非你手动保留它们,否则不存储前一阶段的中间结果。