首先,从一个流式计算的例子WordCount来入手。
我们知道这个程序只有env调用了execute方法才会正式的执行,那么execute方法里面一开始会先创建StreamGraph,然后再生成JobGraph,接着生成ExecutionGraph,最后生成物理执行计划。下面先介绍StreamGraph是如何生成的。
点击进入execute
通过调用这个StreamGraphGenerator.generate方法生成拓扑graph,StreamGraph
看一看参数中的transformations是什么
程序中的我们调用的所有算子都保存在List<StreamTransformation<?>> transformations这里
我们接着来看看StreamGraph里面有什么东西,这里需要关注的是StreamNode和StreamEdge这两个类,就是他们俩构成了StreamGraph
回到我们流式处理的WordCount程序,我们以map这个算子为例,如下图
这里的addOperator方法会把算子添加到刚才所说的List<StreamTransformation<?>> transformations这个变量里
再来看看这个StreamTransformation这个抽象类,它有以下那么多实现