Flink数据流类型转换

Flink为流处理和批处理分别提供了DataStream API和DataSet API。在开发工作中都是利用这些API进行程序编程。不同DataStream之间转换从而形成stream图。网上Flink1.4流程转换图有点旧,不过也能说明之间的转换关系。
Flink数据流类型转换_第1张图片从上面的转换关系可以看出各种不同的流通过operator最后都转换为DataStream。可以从官网查看各个流的转换关系https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/stream/operators/
下面从Transformations角度来说一下。个人觉得可以分两类
1.DataStream和其子类
Flink数据流类型转换_第2张图片这些类都包含StreamExecutionEnvironment、StreamTransformation变量和transform方法,KeyedStream只不过多了keySelector变量
2.DataStream为变量类型流BroadcastStream、CoGroupedStreams、ConnectedStreams、AllWindowedStream等等。这些流可以通过不同的operator最终转化为DataStream类型。
比如WindowedStream流就有变量input(KeyedStream)
WindowedStream流生成Flink数据流类型转换_第3张图片WindowedStream流的变量
在这里插入图片描述
Flink数据流类型转换_第4张图片
Flink数据流类型转换_第5张图片从上面的代码也可以看出最后调用的是input(keyStream)的transform。这样所有的transform操作都统一为DataStream的transform。
注意:由一种类型流转化到另一种类型流,flink代码用很多是用new不是transform方法。比如常用的 DataStream.keyBy操作生成keyStream,只不过传入了this这个变量。同时也说明流不是所有的方法都会transform。只有经过transform方法的操作才能算的上operator,也只有这样才在以后转化成Stream图中有所体现。两者是不一样的。
Flink数据流类型转换_第6张图片
Flink数据流类型转换_第7张图片

你可能感兴趣的:(Flink,flink,DataStream,流类型转换,flatMap,KeyStream)