java 有向无环图_Spark的有向无环图DAG(代码及图解)

本文详细介绍了Spark中DAG的概念,并通过一个具体的DAG案例展示了其在Java中的实现过程,包括DAG的节点(Node)、DAG的构建、核心代码解析以及运行结果展示,涉及到了Spark的DAG和设计模式中的命令思想。
摘要由CSDN通过智能技术生成

目录:

1、有向无环图

2、代码结构

3、代码学习步鄹及方法

4、重点代码讲解

5、代码展现

6、运行结果

———————————————————————————————————

1、有向无环图

在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。

因为有向图中一个点经过两种路线到达另一个点未必形成环,因此有向无环图未必能转化成树,但任何有向树均为有向无环图。

性质:有向无环图的生成树个数等于入度非零的节点的入度积。

dcfdd881587de28752176b49a25903af.png

2、代码结构

f3a96194e240bd40f6bbe989a2cc10c7.png

3、代码学习步鄹及方法

1、本文中涉及到了Spark的Dag和设计模式中的命令

2、Dag学习步鄹:task –> Node –> DAG –> DAGExecutor

3、设计模式命令 http://www.voidcn.com/article/p-fxkbitkn-ov.html

4、图解Dag类的学习步鄹

b5830c9c2df2f89450189d0812b345c5.png

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

f17705f897f33f345f419a58a13e5f7a.png

5、代码展现

DAG.scala

package com.yh.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值