当我们在开发Flink任务的时候,一般情况下Source-Transform-Sink流程就能满足基本的需求了。但是当应用变得非常复杂的时候,可能在一个Job里算子的个数会达到很多,几十、几百。这个时候整个程序就会变得非常复杂,所以如果能随时本地开发时能及时知道Job的执行计划就非常方便了。
为了满足我们类似的需求,可以两种方式去实现。
一、
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-runtime-web_2.12</artifactId>
<version>1.12.2</version>
<scope>test</scope>
</dependency>
可以在pom中添加上述依赖,本地调试运行时,即可打开Flink Dashboard页面,查看对应的DAG。
二、
另外一种方式也是官方提供的可视化工具visualizer,可以通过打开https://flink.apache.org/visualizer/地址进行查看。该方式需要依赖执行计划的JSON文件。
JSON的生成,只需要在Flink任务的Main方法中添加一行代码即可:
System.out.println(env.getExecutionPlan());
就会生成如下的JSON:
{"nodes":[{"id":1,"type":"Source: Custom Source","pact":"Data Source","contents":"Source: Custom Source","parallelism":8},{"id":2,"type":"Flat Map","pact":"Operator","contents":"Flat Map","parallelism":8,"predecessors":[{"id":1,"ship_strategy":"FORWARD","side":"second"}]},{"id":3,"type":"flatMap-1","pact":"Operator","contents":"flatMap-1","parallelism":8,"predecessors":[{"id":2,"ship_strategy":"FORWARD","side":"second"}]},{"id":4,"type":"async-1","pact":"Operator","contents":"async-1","parallelism":8,"predecessors":[{"id":3,"ship_strategy":"FORWARD","side":"second"}]}]}
通过点击Draw即可生成对应的DAG
然后还可以点击具体的算子,查看详细信息。
更详细内容,请移步https://mp.weixin.qq.com/s/O2Ibbnu8Mp02doFGc3eHig进行查看。