1.视界
2.前文回顾
上一篇文章[flink 的 OperatorChain]讲到,OperatorChain 的构造函数会接受一个 recordWriters 参数,recordWriters 是一个 RecordWriter 类型的 List。OperatorChain 会为 chain 的每一条出边创建一个 RecordWriterOutput 实例,RecordWriterOutput 中包裹着 RecordWriter,今天我们就来看看这两个类
3.OperatorChain 构造函数的 recordWriters 是如何生成的
我们来看一下 OperatorChain 构造函数的 recordWriters 参数是如何生成的,代码位于 org.apache.flink.streaming.runtime.tasks.StreamTask.java
中
可以看到,首先会从 StreamConfig 中获取 JobVertex 的所有出边,也就是 chain 的所有出边,同时获取 chain 中所有操作符的 StreamConfig,然后对每一条边调用 createRecordWriter 方法
createRecordWriter 会从 StreamEdge 上获取 StreamPartitioner,并从 StreamTask 的指向环境中获取 ResultPartitionWriter,然后调用 静态方法 Record