Spark DAG可视化是否具有outgoingEdges?

时间:2017-06-28 12:54:15

标签: apache-spark directed-acyclic-graphs

我正在查看Spark UI DAG可视化代码,并找到以下snippet

edges.foreach { case e: RDDOperationEdge =>
  val fromThisGraph = nodes.contains(e.fromId)
  val toThisGraph = nodes.contains(e.toId)
  (fromThisGraph, toThisGraph) match {
    case (true, true) => internalEdges += e
    case (true, false) => outgoingEdges += e
    case (false, true) => incomingEdges += e
    // should never happen
    case _ => logWarning(s"Found an orphan edge in stage ${stage.stageId}: $e")

据我所知,内部边缘表示一个阶段内RDD之间的边缘,入射边缘来自前一阶段到当前阶段的RDD,而外出边缘将来自当前阶段的RDD到后续阶段。但是,从edges are created based on the RDDs parentIds开始,我很难理解外边缘是如何出现的,因为在当前阶段的分析中找不到指向当前阶段的parentId的RDD。

我是否认为即使外出的遗嘱永远不会存在?

1 个答案:

答案 0 :(得分:0)

outgoingEdges可能存在,它们是边缘,最后没有节点。

如果您观察到

case (true, false) => outgoingEdges += e

fromThisGraph = true,即e.fromId存在于节点中; toThisGraph = false,即e.toId不存在于节点中,表示分支的另一端连接到无节点

---------------      e
|     node    |------>-----        
---------------

与incomingEdges类似,没有起始节点。

我希望我有意义