1、DAG的整体图
简要说明(个人理解):
①当所有的RDD触发action的时候,会生成一个DAG
②stage是由DAG进行切分的,可以理解stage是一个taskset
③DAG是根据宽依赖进行切分stage的,stage是由Driver进行提交的
④stage是一个一个提交的,当前一个stage计算完成的时候,下一个stage才会进行拉取计算
通过hue页面可以看到一个stage包括几个task任务
2、如何切分stage
DAG是根据宽依赖与窄依赖进行切分,一般来说,有shuffle的时候,就会切分前一个stage,也可以是以宽依赖进行切分的
①窄依赖:
②宽依赖
③总体
总结:
①一般来说,reducebykey,groupbykey都是shuffle阶段,要切分
②如果是jion的话,有两种情况,一种是groupby之后的,这种情况是属于窄依赖
另一种是直接join,产生shuffle属于宽依赖
③默认是以key的hashpartition进行分区,反正是shuffle阶段就是要切分
④像map,flatMap,都是窄依赖