flink的streamGraph逻辑图优化为jobGraph
streamGraph到jobGraph主要作用是优化某些节点的合并,避免任务网络开销, 将多个节点合并在一个slot内执行
从起点开始遍历递归, 判断 边 的上限由节点的并行度是否一致, 及下游算子节点只有一个上游等, 把每个节点的上下游节点是否可合并放入两个集合中,然后再递归遍历两个集合中的节点
如果判断下游节点是可chain的, 则不可chain得递归会被忽略,如下代码
然后把可chain的节点放入 以起始节点为key, value是list的map中,把他们可chain一起的算子保存在一起
;
另外分析下游节点不可chain时, 则走如下递归
当判断起始节点和当前节点一致时,开启新的chain;
类似递归createChain 形成新的chain节点;