04转换算子
转换算子
定义键
tuple
1 | |
pojo
- pojo类必须是public修饰
- 必须包含空构造器
- 字段必须是public或有 public getter
- 字段类型必须是flink支持的
- 如果pojo和tuple嵌套 支持
f1.word等格式
1 | |
keySelector
1 | |
通用转换算子
Map
1 | |
FlatMap
1 | |
Filter
1 | |
Project
1 | |
DataSet专用转换算子
reduce
1 | |
aggregate
提供的内置功能:
- sum:求和
- min:最小值
- max:最大值
1 | |
distinct
1 | |
partition
1 | |
minBy/Maxby
返回元祖中指定字段最大或最小的元祖
如果有多个相同的最大值或最小值,返回任意一个
1 | |
First-n
1 | |
DataStream专用转换算子
union
将两个流或多个流合并,从而创建一个包含所有流中元素的新流
必须要求类型相同
1 | |
connect
连接两个数据流,但是两个数据流只是被放在同一个流(ConnectedStream)中,依然保持各自的数据形式,两个流相互独立
1 | |
coMap/coFlatMap
将connectedStream转换为DataStream
split/select
split:将一个流拆分成多个流
select:从split流中获取一个或多个流
keyBy
将DataStream转换为KeyedStream
逻辑分区
1 | |
aggregate
1 | |
reduce
对键控流的reduce
1 | |
window
将keyedStream转换为windowStream
1 | |
windowAll
将dataStream转换为AllWindowStream
1 | |
window apply
将windowStream或AllwindowStream转换为DataStream
window reduce
1 | |
物理分区算子
partitionCustom
1 | |
shuffle
根据均匀分布对元素随机划分
rebanlance
以循环的方式分发数据
rescale
以round-robin方式将元素分区
仅需要本地数据传输,而不是通过网络传输数据
上游算子所发送的元素被分区到下游算子的哪些子集,取决于上游算子和下游算子的并行度,比如上游算子的并发度2,下游算子并发度为6,则第一个上游算子将数据发送到其中3个下游算子,另外一个上游算子将数据发送到另外3个下游算子
broadcast
将元素广播到每个分区
算子链接
在默认情况下,算子会自动链接(多个算子共享一个slot)
只能在dataStream转换后使用,因为引用的是先前的转换
禁用链接
1 | |
开始链接
两个map会被链接,并且filter不会被链接
1 | |
关闭链接
1 | |
设置插槽共享组
将具有相同插槽共享组的算子放到同一插槽中
1 | |
04转换算子
https://jiajun.xyz/2022/08/28/bigdata/11Flink/02flink_study2/04转换算子/