flink在数据存储和数据交换的过程中需要交换大量信息,本篇我们了解一些关于flink序列化相关的内容。
常见问题
- 注册子类型 :如果函数仅描述了父类型,但执行是指定子类型的话会大大提升性能,
- 注册自定义类型 :类似google guava 集合类 无法处理是就需要自定义序列化器
- 添加类型提示: 当flink无法推断类型时,用户必须传递类型提示
- 用户自定义TypeInformation: 对于某些API,由于泛型的擦除,flink无法推断类型
Flink数据类型分类
- 基础类型: int long Integer Double等
- 数组:Arrays
- 复合类型: Tuple Row PoJo 等
- 辅助类型 : Option Lists Map
- 泛型和其他 kyro
开启avro序列化
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.getConfig().enableForceAvro();
或者完全使用kyro进行处理
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.getConfig().enableForceKryo();
参考文章: https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/types_serialization.html