zwb*_*zwb 22 apache-spark spark-streaming rdd
rdd1.join(rdd2)如果rdd1并rdd2拥有相同的分区,会导致洗牌吗?
Dan*_*bos 36
不.如果两个RDD具有相同的分区,join则不会导致混乱.您可以在CoGroupedRDD.scala以下位置看到:
override def getDependencies: Seq[Dependency[_]] = {
rdds.map { rdd: RDD[_ <: Product2[K, _]] =>
if (rdd.partitioner == Some(part)) {
logDebug("Adding one-to-one dependency with " + rdd)
new OneToOneDependency(rdd)
} else {
logDebug("Adding shuffle dependency with " + rdd)
new ShuffleDependency[K, Any, CoGroupCombiner](rdd, part, serializer)
}
}
}
Run Code Online (Sandbox Code Playgroud)
但请注意,缺少shuffle并不意味着不必在节点之间移动数据.两个RDD可能具有相同的分区(被共同分区),但是具有位于不同节点上的相应分区(不是共同定位的).
这种情况仍然比洗牌更好,但要记住这一点.共址可以提高性能,但很难保证.
| 归档时间: |
|
| 查看次数: |
12889 次 |
| 最近记录: |