Flink源码解读(四)-Flink 1.9新特性:二进制化与minibatch聚合
发布时间
阅读量:
阅读量
数据结构二进制化设计

源码解读
org/apache/flink/table/dataformat/BinaryRow.java
-
依托Flink中最小的内存管理单元MemorySegment得以实现,有效降低了序列化与反序列化过程中的资源消耗
-
如上图所示,一个binary row由两部分组成:固定长度部分与可变长度部分
-
固定长度部分:
- 包含一个字节长度的头部信息
- null位集合用于追踪字段是否为空,并且与8字节对齐
- 字段值存储基本类型以及能够以8字节形式保存的可变长度值
- 若无法满足上述条件,则字段值将记录可变长度值的长度及偏移量
- 所有数据完全包含于MemorySegment中,从而提升了字段读写效率
- 单行中字段的数量不得超过一个MemorySegment所能承载的最大容量
-
可变长度部分:
- 可能需要多个MemorySegment进行存储

还没有任何评论哟~
