在flink里面,我们编写了job之后,我们有时候需要了解下flink到底怎么执行的这个job。在原生的代码里面,我们写的代码量很少,很难看得出来具体的执行过程。所以在这里flink官方提供了一个可以直接可视化生成flink的任务执行计划图的工具,我们可以利用起来。例如我们举个例来说,以前面写的StreamWordCount为例,我们看下StreamWordCount 这个类的执行计划图是什么样子的?
通过这个我们可以看到他的执行情况。那么这个图怎么生成的呢?下面介绍下步骤。
一、在job里面添加代码,打印出来所有的算子信息
这个很简单,就是在代码里面添加一句:
System.out.println(environment.getExecutionPlan());
完整的示例如下:
二、运行此job
运行此job的main方法之后我们可以在控制台看到有输出
{ "nodes" : [ { "id" : 1, "type" : "Source: Custom Source", "pact" : "Data Source", "contents" : "Source: Custom Source", "parallelism" : 1 }, { "id" : 2, "type" : "Flat Map", "pact" : "Operator", "contents" : "Flat Map", "parallelism" : 16, "predecessors" : [ { "id" : 1, "ship_strategy" : "REBALANCE", "side" : "second" } ] }, { "id" : 4, "type" : "Window(TumblingProcessingTimeWindows(10000), ProcessingTimeTrigger, SumAggregator, PassThroughWindowFunction)", "pact" : "Operator", "contents" : "Window(TumblingProcessingTimeWindows(10000), ProcessingTimeTrigger, SumAggregator, PassThroughWindowFunction)", "parallelism" : 16, "predecessors" : [ { "id" : 2, "ship_strategy" : "HASH", "side" : "second" } ] }, { "id" : 5, "type" : "Sink: Print to Std. Out", "pact" : "Data Sink", "contents" : "Sink: Print to Std. Out", "parallelism" : 16, "predecessors" : [ { "id" : 4, "ship_strategy" : "FORWARD", "side" : "second" } ] } ] }
如图:
三、在flink官网生成执行计划图
3.1、访问flink的官网:https://flink.apache.org/visualizer/
在这里我们可以看到这个界面
3.2、把刚才获取到的算子json复制进去
3.3、点击Draw按钮生成执行计划图
此时关于StreamWordCount这个job的完整执行计划图就生成了,我们可以很直观的查看到完整的执行计划。
还没有评论,来说两句吧...