Flink数据类型和序列化

2021-09-19  本文已影响0人  程序员小白成长记

一、为什么Flink需要自定义序列化框架

flink运行在JVM之上,将大量的数据存储在内存中,就会面临JVM存在的问题:
1)Java对象的存储密度比较低
2)fullGC的性能问题
3)OOM造成的稳定性的问题
为了解决这些问题,自己实现一个内存管理,用自定义的内存池进行内存的分配和回收,这样就引出了序列化,是将序列化后的对象存储在内存中的。
开源的序列化框架有很多,但是Flink定制自己的序列化框架的好处:
1)Flink对于类型信息了解的越多,可以在运行之前完成类型检查的操作,避免在运行时抛出错误
2)知道数据类型可以选择更好的序列化方式,更好的数据布局,减少内存的存储空间
3)可以直接进行二进制的操作

二、Flink的数据类型

image.png image.png

三、Flink序列化过程

根据不同的类型获取不同的序列化器,也可以自定义序列化器

image.png image.png

四、Flink序列化的最佳实践

最常见的场景

五、参考文档

【1】Flink 数据类型与序列化 PPT
【2】【Apache Flink 进阶教程 视频教程】5、Flink 数据类型和序列化

上一篇下一篇

猜你喜欢

热点阅读