当我join
两个RDD
时,实际连接的数据在哪里,即在驱动程序上聚合的数据然后运回工作节点,或者是随机选择的节点之一到"接收"数据?此外,如果我在partition
上拨打pairRDD
,那么分区是否会自动按键完成?
答案 0 :(得分:4)
不,它不会通过驱动程序或任何单个节点继续。发生洗牌,其中跨执行器的许多任务中的每一个都收集关键字子集的所有值(来自父母双方)。这些任务在迭代时形成每个密钥的连接产品。分区是关键。加入两个相同分区的RDD是有利的,因为你可以避免混乱。