2.1 数据流
- DataStream:DataStream是Flink数据流的核心抽象,其上定义了对数据流的一系列操作
- DataStreamSource:DataStreamSource 是 DataStream 的 起 点 , DataStreamSource 在StreamExecutionEnvironment 中 创 建 , 由 StreamExecutionEnvironment.addSource(SourceFunction)创建而来,其中SourceFunction中包含了DataStreamSource从数据源读取数 据的具体逻辑。
- DataStreamSink:数据从DataSourceStream中读取,经过中间的一系列处理操作,最 终 需 要 写 出 到 外 部 存 储 , 通 过DataStream.addSink(sinkFunction)创建而来,其中SinkFunction定义了写出数据到外部存储的具体逻辑。
- KeyedStream:KeyedStream用来表示根据指定的key进行分组的数据流。一个KeyedStream 可 以 通 过 调 用 DataStream.keyBy ( ) 来 获 得 。 而 在 KeyedStream上进行任何Transformation都将转变回DataStream。在实现中,KeyedStream把key的信息写入了Transformation中。每条记录只能访问所属key的状态,其上的聚合函数可以方便地操作和保存对应key的状态。
- WindowedStream & AllWindowedStream:WindowedStream代表了根据key分组且基于WindowAssigner切分窗口的数据流。所以WindowedStream都是从KeyedStream衍生而来的,在WindowedStream 上 进 行 任 何 Transformation 也 都 将 转 变 回DataStream。
- JoinedStreams & CoGroupedStreams:JoinedStreams 底 层 使 用CoGroupedStreams来实现。
- ConnectedStreams:ConnectedStreams表示两个数据流的组合,两个数据流可以类型一样,也可以类型不一样。
- BroadcastStream & BroadcastConnectedStream:BroadcastConnectedStream 一 般 由 DataStream/KeyedDataStream与BroadcastStream连接而来,类似于ConnectedStream。
- IterativeStream:IterativeDataStream是对一个DataStream的迭代操作,从逻辑上来说,包含IterativeStream的Dataflow是一个有向有环图,在底层执行层面上,Flink对其进行了特殊处理。
- AsyncDataStream:AsyncDataStream是个工具,提供在DataStream上使用异步函数的能力。
2.2 处理函数
- Map:1进1出
- FlatMap:1进多出
- Filter:返回true继续传递
- KeyBy:进行逻辑分组
- Reduce:增量合并:按照KeyedStream中的逻辑分组,将当前数据与最后一次的Reduce结果进行合并。
- Aggregation:渐进聚合,可以设置初始值。
- Window:对KeyedStream的数据,按照Key进行时间窗口切分。
- WindowAll:对一般的DataStream进行时间窗口切分,即全局1个窗口。
- Union:把两个或多个DataStream合并,要求数据类型一致。
- connect:只能合并2个流,数据类型可以不一致。可以共享状态
- Join:在相同时间范围的窗口上Join两个DataStream数据流,输出结果为DataStream。
- Interval Join:对满足时间范围的两个KeyedStream进行Join,和Join时使用的Key,输出结果为DataStream。
- WindowCoGroup:两个DataStream在相同时间窗口上应用CoGroup运算,输出结果为DataStream,CoGroup和Join功能类似,但是更加灵活。
- Split:切分流,前后流数据类型一致(侧输出可以不一致)
- Select:与 Split 运 算 配 合 使 用 , 在 Split 运 算 中 切 分 的 多 个DataStream中选择一个。
- Iterate:在数据流中创建一个迭代循环,即将下游的输出发送给上游重新处理。IteractiveStream本质上来说是一种中间数据流对象。
- Extract Timestamps:从记录中提取时间戳,并生成Watermark。
- Project:该类运算只适用于Tuple类型的DataStream,使用Project选取子Tuple,可以选择Tuple的部分元素,可以改变元素顺序。