流处理API-Transform
1、基本转换算子
map、flatMap、filter通常被统一称为基本转换算子(简单转换算子)
DataStream 里没有 reduce 和 sum 这类聚合操作的方法,因为 Flink 设计中,所有数据必须先分组才能做聚合操作。
先 keyBy 得到 KeyedStream,然后调用其 reduce、sum 等聚合操作方法。(先分组后聚合)
常见的聚合操作算子主要有:
- keyBy
- 滚动聚合算子 Rolling Aggregation
- reduce
DataStream -> KeyedStream:逻辑地将一个流拆分成不相交的分区,每个分区包含具有相同key的元素,在内部以hash的形式实现的。
1、KeyBy会重新分区; 2、不同的key有可能分到一起,因为是通过hash原理实现的;
Rolling Aggregation
这个算子可以针对 KeyedStream 每一个支流做聚合
- sum()
- min()
- max()
- minBy()
- maxBy()
错误
//lamda表达式 are not supported at language level ‘7’ 改成 level8
This type (GenericType<com.example.apitest.beans.SensorReading>) cannot be used as key
出现这种错误是因为你对象没有无参构造方法
添加无参数构造方法
reduce - 适用于更加一般化的聚合操作
2、多流转换算子
- split 和 collect
- Connect 和 CoMap
- Union