窄依赖是指父RDD的每个分区只被子RDD的一个分区所使用,子RDD分区通常对应常数个父RDD分区(O(1),与数据规模无关)
相应的,宽依赖是指父RDD的每个分区都可能被多个子RDD分区所使用,子RDD分区通常对应所有的父RDD分区(O(n),与数据规模有关)
简单来说, 就是窄依赖是一对一或者多对一, 宽依赖就是多对多或者一对多
窄依赖,如果一个part失败了,只需要固定几个父part重跑,宽的就需要所有的都重跑了
两个或者固定几个part合到一个part,起到减少分区的作用,这个也是窄依赖,比如coalese
要知道part是一个逻辑概念,可能是对应多个文件,当coalese时不会真的执行把多个分区合成一个分区,而是在rdd处理的时候,按照映射关系直接去取就好了,不存在shuffle过程!
网友评论