Spark RDD特征与宽窄依赖

RDD有如下特征:

(1)有一个分片列表,就是能被切分,和hadoop一样,能够切分的数据才能并行计算。

(2)由一个函数计算每一个分片。

(3)对其他RDD的依赖列表,依赖还具体分为宽依赖和窄依赖,但并不是所有的RDD都有依赖。

(4)可选:key-value型的RDD是根据哈希来分区的,类似于mapreduce当中的partitioner接口,控制key分到哪个reduce。

(5)可选:每一个分片的优先计算位置(preferred locations),比如HDFS的block的所在位置应该是优先计算的位置。


Spark之所以将依赖分为narrow与shuffle,基于两点原因:

      首先,narrow dependencies 可以支持在同一个cluster node上以pipeline形式执行多条命令,例如在执行了map后,紧接着执行filter。相反,shuffle dependencies需要所有的父分区都是可用的,可能还需要调用类似MapReduce之类的操作进行跨节点传递。

      其次,则是从失败恢复的角度考虑。narrow dependencies的失败恢复更有效,因为它只需要重新计算丢失的parent partition即可,而且可以并行地在不同节点进行重计算。而shuffle dependencies牵涉RDD各级的多个parent partition。


你可能感兴趣的:(Spark,spark,RDD,宽窄依赖)