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