DataSteam的Operator
Operator名称 | 输入类型 -> 输出类型 | 解释 | 示例 |
---|---|---|---|
Map | DataStream - > DataStream | 输入一个元素并生成一个元素 | dataStream.map() |
FlatMap | DataStream -> DataStream | 输入一个元素并生成0,1或多个元素 | dataStream.flatMap() |
Filter | DataStream -> DataStream | 对每个元素计算布尔函数值,布尔函数返回true的元素将保留 | dataStream.filter() |
keyby | DataStream -> KeyedStream | 逻辑地将数据流划分到不同的分区,具有相同的Key的所有记录被分配到相同的分区。默认keyBy()是通过Hash分区实现的,注意: 不能认为一个分区只处理一个key | dataStream.keyBy() |
Reduce | KeyedStream -> DataStream | 对KeyedStream数据流“滚动"聚和。将当前元素与最近聚合的值聚合计算出新值 | KeyedStream.minBy() |
Aggregations | KeyedStreeam -> DataStream | 聚合函数泛指,例如sum(),minBy(),maxBy(),min(),max()等 | keyedStream.minBy() |
Window | KeyedStream -> WindowedStream | Windows可以在已经分区的KeyedStreams上定义。WIndouws根据某些特征(例如,最近5秒内到达的数据)对每个key中数据进行分组 | dataStream.keyby().window() |
WindowAll | DataStream -> AllWindowedStream | WindowAll可以在常规的dataStream上定义。上流没有进行keyby(),WindowAll根据某些特征(例如,最近5秒内到达的数据)对所有流时间进行分组 | dataStream.windouwAll() |
Windou Apply | WindowedStream ->DataStream AllWindowedStream -> DataStream | 将通用函数应用整个窗口 | windowwdStream.apply() |
WindouReduce | WindowedStream -> DataStream | 对窗口应用reduce函数,并返回经过聚合的值 | WindowedStream.reduce() |
WindowJoin | DataStream,DataStream,DataStream -> DataStream | 将在同一个窗口中的两个数据流通过指定Key连接起来 | dataStream.join(otherStream) .where().equalTo() .window() |
WindowCoGroup | DataStream,DataStream -> DataStream | 将在同一个窗口中的两个数据流通过指定key进行协分组 | dataStream.coGroup(otherStream).where(0).equalTo(1).window() |
intervalJoin | KeyedStream,KeyedStream -> DataStream | 在指定时间间隔内将两个KeyedStream的元素e1和e2用一个相同Key连接起来,因此e1.timestamp + lowerBound <= e2.timestamp <= e1.timestamp <= e1.timestap + upperBound | KeyStream.intervalJoin(other) .between(Time.milliseconds(-2),Time.milliseconds(2)) .upperBoundExclusive(true) .lowerBoundExclusive(true) .process(new intervalJoinFunction(){…}) |
Union | DataStream* -->DataStream | 将两个或多个相同同类型的数据流合并,创建一个包含所有数据流中所有元素的新数据流,注意: 如果你将数据流与它自身结合,你将得到结果流中的每个元素两次 | someStream.union(otherStream).inion() |
Connect | DataStream,DataStream --> ConnectedStream | 连接两个不同类型的数据流,允许两个流之间共享状态 | someStream.connect(otherStream) |
CoMap,CoFaltMap | ConnectedStream – > DataStream | 类似于ConnectedStream(连接数据流)上的map和flatMap函数 | connectedStreams.map() |
iterate | DataStream --> iterativeStream --> ConnectedStream | 通过将一个Opertor的输出重定向到前面的某个Operator,在流中创建一个“feedback”循环。这对于定义持续更新模型的算法尤其有用 | initialStream.iterate{} |