承接上篇《Flink学习系列(七)自定义实现一个flink的mysqlsink》。我们介绍了flink是一个分布式计算框架。在之前我们介绍了flink的datasource和flink的sink。目前还剩下的就是flink的计算部分了。来一张图演示一下:
这篇文章呢,我们就来介绍下flink的compute计算部分,这部分的名字主要是Transform操作。常见的Transform操作有:
序号 | Transform操作 |
1 | map |
2 | flatmap |
3 | filter |
4 | reduce |
5 | fold |
6 | aggregations |
7 | window |
8 | windowall |
9 | union |
10 | window join |
11 | split |
12 | select |
13 | project |
...... | ...... |
以上的transform动作都是我们常用的。对于初学者来说,我们通过一些场景来解释下这些transform操作。
1)map操作
输入是一个数据流,输出的也是一个数据流,例如输入是“张三”,输出可以是“张三的家”,输入和输出是一对一的关系
2)flatmap操作
输入是一个数据流,输出的是多个数据流,例如输入是“this is a test”,输出可以是:[(“this”,1)(“is”,1)...],输入和输出是一对多的关系
3)filter操作
这里主要是返回true或者false,就是根据某些条件进行过滤,例如:输入一大批年龄,根据条件小于18岁的人员不要,那么输出的只有大于等于18岁年龄的人员
4)keyBy操作
这里类似于mysql的group by
5)reduce操作
返回单个的结果值,类似:average, sum, min, max, count这种结果
6)fold操作
通过将最后一个文件夹流与当前记录组合来推出 KeyedStream。 它会发回数据流。
7)aggregations操作
各种聚合,例如 min,max,sum 等
8)window操作
Window 函数允许按时间或其他条件对现有 KeyedStream 进行分组,主要应用于时间窗口的计算
9)windowall操作
windowAll 函数允许对常规数据流进行分组。 通常,这是非并行数据转换,因为它在非分区数据流上运行
10)union操作
类似mysql的union
11)window join操作
通过一些 key 将同一个 window 的两个数据流 join 起来
12)split操作
切割,返回一对多的关系。
13)select操作
允许从拆分流中选择特定流
14)project操作
允许从事件流中选择属性子集,并仅将所选元素发送到下一个处理流。
当然还有其他的操作,在实际使用的时候,大家会遇到。
还没有评论,来说两句吧...