美文网首页
flink的执行计划——StreamGraph

flink的执行计划——StreamGraph

作者: aiguang2016 | 来源:发表于2017-02-16 15:43 被阅读0次

    flink的执行计划分为四层

    通过Stream API提交的文件,首先会被翻译成StreamGraph。StreamGraph的生成的逻辑是在StreamGraphGenerate类的generate方法。而这个generate的方法又会在StreamExecutionEnvironment.execute方法被调用。

    首先生成StreamGraph的方法如下:

    这个方法遍历了每一个Transformation。这里的Transformation要解释一下。Transformation是描述了一个或者多个DataStream转换成其他DataStream的操作。比如DataStream的map方法:

    DataStream的map、flatmap、filter、union方法都是利用transform来描述这种转换的关系。比如我们来看map:

    map被包装成了StreamMap类型,让我们继续跟进这个transform方法:

    这里将转换后的resultTransform放到了一个List。

    现在我们再回去看之前StreamGraphGenerate类的generateInternal方法。这个方法遍历了每一个transformation,并对其调用transform方法。根据不同的类型,调用transformXXXX

    看下transformSink这个方法

    首先会递归遍历他的每一个上游input,保证上游全部处理完毕。然后添加Edge(input->sink)。

    这篇文章分析了transformOnInputTransform(transform)

    再看一个select的逻辑,这里没有创建任何Edge,只是新建一个虚节点。

    而在addEdge的逻辑里,对于select是如此处理的,利用虚id获得真正的上游id,然后进行绑定:

    而最终的Edge的建立是在这段代码之后,如果partition为空,并且入节点和出节点的并发度相同则使用FowardPartition否则使用ReblancePartitioner,然后分别构建入度和出度:

    相关文章

      网友评论

          本文标题:flink的执行计划——StreamGraph

          本文链接:https://www.haomeiwen.com/subject/nhkxwttx.html