我想修改jobGraph,例如getVertices(), ColocationGroup()
,并尝试执行以下操作:
val s = StreamExecutionEnvironment.getExecutionEnvironment
val p = new Param()
s.addSource(new MySource(p))
.map(new MyMap(p))
.addSink(new MySink(p))
val g = s.getStreamGraph.getJobGraph()
val v = g.getVertices()
s.executeAsync()
但是在调试模式下,顶点不是我的MySource
运算符,并且我很困惑getStreamGraph
可以接受JobID
,在作业开始之前怎么会有id。 。,所以我想也许我应该在execute
之后得到它,然后将代码更改为following,
val s = StreamExecutionEnvironment.getExecutionEnvironment
val p = new Param()
s.addSource(new MySource(p))
.map(new MyMap(p))
.addSink(new MySink(p))
s.executeAsync()
val g = s.getStreamGraph.getJobGraph()
val v = g.getVertices()
但是代码陷入了s.getStreamGraph.getJobGraph()
如何实际获得工作图?...
答案 0 :(得分:1)
无法修改JobGraph。各种API构造了JobGraph,然后将其传递给JobManager,后者将其转换为执行图,然后对其进行调度并在任务管理器提供的任务槽中运行。建立作业后,没有API允许您修改作业的拓扑。 (这有一天会得到支持,这是不可想象的,但现在不可能了。)
如果您只想查看它的表示,System.out.println(env.getExecutionPlan())
很有趣。
如果您希望从静态DAG中获得更多动力,那么Stateful Functions API会更加灵活。