Apache Spark RDD 分区和连接

Apache Spark RDD partitioning and join

当我 join 两个 RDDs 数据实际连接在哪里时,即数据是在驱动程序上聚合然后运回工作节点,还是其中一个节点随机抽取到"receive"个数据?此外,如果我在 pairRDD 上调用 partition 那么分区是否会自动通过密钥完成?

不,它不通过驱动程序或任何单个节点进行。发生洗牌,其中跨执行者的许多任务中的每一个都收集键子集的所有值(来自 parents)。这些任务在迭代时为每个键形成连接产品。分区是按键。加入两个 identically-partitioned RDDs 是有利的,因为你可以避免混洗。