@tsing1226
2016-05-05T09:43:09.000000Z
字数 479
阅读 1049
spark
Spark宽依赖与窄依赖
标签: Spark 宽依赖 窄依赖
在RDD中将依赖划分成了两种类型:窄依赖(narrow dependencies)和宽依赖(wide dependencies)。
- 窄依赖是指父RDD的每个分区都只被子RDD的一个分区所使用;
- 宽依赖就是指父RDD的分区被多个子RDD的分区所依赖。
例如,map就是一种窄依赖,而join则会导致宽依赖(除非父RDD是hash-partitioned,见下图)、
这种划分有两个用处。
- 首先,窄依赖支持在一个结点上管道化执行。例如基于一对一的关系,可以在filter之后执行map。
- 其次,窄依赖支持更高效的故障还原。因为对于窄依赖,只有丢失的父RDD的分区需要重新计算。而对于宽依赖,一个结点的故障可能导致来自所有父RDD的分区丢失,因此就需要完全重新执行。因此对于宽依赖,Spark会在持有各个父分区的结点上,将中间数据持久化来简化故障还原,就像MapReduce会持久化map的输出一样。
参考文章地址:http://blog.csdn.net/dc_726/article/details/41381791