Advertisement

Flink源码解读(四)-Flink 1.9新特性:二进制化与minibatch聚合

阅读量:

数据结构二进制化设计

在这里插入图片描述

源码解读

org/apache/flink/table/dataformat/BinaryRow.java

  • 依托Flink中最小的内存管理单元MemorySegment得以实现,有效降低了序列化与反序列化过程中的资源消耗

  • 如上图所示,一个binary row由两部分组成:固定长度部分与可变长度部分

  • 固定长度部分:

    • 包含一个字节长度的头部信息
    • null位集合用于追踪字段是否为空,并且与8字节对齐
    • 字段值存储基本类型以及能够以8字节形式保存的可变长度值
    • 若无法满足上述条件,则字段值将记录可变长度值的长度及偏移量
    • 所有数据完全包含于MemorySegment中,从而提升了字段读写效率
    • 单行中字段的数量不得超过一个MemorySegment所能承载的最大容量
  • 可变长度部分:

    • 可能需要多个MemorySegment进行存储

![在这里插入图片描述](https://ad.itadn.com/c/weblog/blog

全部评论 (0)

还没有任何评论哟~