目录:
1、有向无环图
2、代码结构
3、代码学习步鄹及方法
4、重点代码讲解
5、代码展现
6、运行结果
———————————————————————————————————
1、有向无环图
在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。
因为有向图中一个点经过两种路线到达另一个点未必形成环,因此有向无环图未必能转化成树,但任何有向树均为有向无环图。
性质:有向无环图的生成树个数等于入度非零的节点的入度积。
2、代码结构
3、代码学习步鄹及方法
1、本文中涉及到了Spark的Dag和设计模式中的命令
2、Dag学习步鄹:task –> Node –> DAG –> DAGExecutor
3、设计模式命令 http://www.voidcn.com/article/p-fxkbitkn-ov.html
4、图解Dag类的学习步鄹
4、重点代码讲解
下面这段代码是核心也是最难的,如何找到父节点
//判断Node的task节点的父节点运行状态(flase ,true)
private def getPending: Option[T] = {
_pending.find { name =>
val parents = _nodes(name)
!parents.exists(name => !_success.contains(name))
}
}
1、nodes没有父节点时,!parents.exists() 为true
2、parents.exists() 为flase时,!parents.exists() 为true
5、代码展现
DAG.scala
package com.yh.