关于flink基础开发
- 首先准备数据
- 准备数据
- 中间对数据进行转换处理
- 可以输出打印结果或者到日志中
- 执行
这块儿算是比较基础的一块儿,但是一开始接触会感觉跟java原生代码有所区别,看久了就觉得都是一个东西。
关于keyBy()
- 返回类型为KeyedStream
- 主要用于分组
- 在逻辑上将流划分为不相交的分区。具有相同键的所有记录都分配到同一个分区。
- 在内部,keyBy()是通过散列分区实现的。有不同的方法来指定键。
从这块儿算子开始,就跟Java8的lambda表达式差不多了几乎一样的,都是stream流式操作,得亏上家公司的小伙伴都贼爱玩lambda。
关于reduce()
- 可以重写方法数据处理
- 对键控数据流的“滚动”减少。将当前元素与最后减少的值组合并发出新值。
关于map()
- 用法跟咱lambda的map几乎一样 也是一个替换的关系
- 接收一个元素并产生一个元素。
关于flatMap()
- 接收一个元素并产生一个或者多个元素 就跟拆分输出一样 lambda应该也有
关于filter()
- 跟lambda差不多 过滤
- 通过Boolean类型 只有TRUE的能返回
关于union
- 可以合并两个或者三个数据流
最后附带一个报错
Assigned key must not be null!
- flink报错: Caused by: java.lang.NullPointerException: Assigned key must not be null!
- 原因 keyBy的字段不能为null