2.4.1 转换操作路线图
Flink除了data source和data sink,还有一个重要的操作就是data transformation,它是flink操作数据的核心,它可以分为两类,一类是键控状态的处理,另一类是非键控状态的处理,类似于下面两个流程:
stream
.keyBy(...) <- 键控状态的操作,区别于非键控状态
.window(...) <- 窗口处理
[.trigger(...)] <- 触发机制的处理
[.evictor(...)] <- 流数据的前期处理
[.allowedLateness(...)] <- 对迟到数据的处理
[.sideOutputLateData(...)] <- 迟到数据的侧输出处理
.reduce/aggregate/fold/apply(...) <- 数据聚合操作处理
[.getSideOutput(...)] <- 数据的侧输出处理
stream
.windowAll(...) <- 窗口处理
[.trigger(...)] <- 触发机制的处理
[.evictor(...)] <- 流数据的前期处理
[.allowedLateness(...)] <- 对迟到数据的处理
[.sideOutputLateData(...)] <- 迟到数据的侧输出处理
.reduce/aggregate/fold/apply(...) <- 数据聚合操作处理
[.getSideOutput(...)] <- 数据的侧输出处理
其中,[]括号内都是可选的操作。我们先从必选的操作讲起,然后再讲可选的操作。