数据湖-Iceberg-源码学习-Kernel-Table Format-FileLayouts-优化-小文件
一、概述
Iceberg 每次快照都产生了大量的文件。包括 Manifest 文件和数据文件 DataFile,以及快照文件和上述这些文件的校验文件。当存在删除更新操作,Manifest 文件和数据文件又拆分出来删除类型的对应文件 DeleteFile,当快照执行场率过高且每次操作数据量较小时,会产生大量的小文件,从而导致系统性能减弱,为解决这类问题,Iceberg 也提供了相应的文件合并、重写等操作来减轻这类问题。
二、设计
2.1. 文件重写
图中在两个事务(snap-1 和 snap-2 )中分别增加 1 条记录,生成 2 个 manifest 文件和 2 个 datafile 文件,希望这两条记录位于同一个文件,此时需要在 snap-3 中将数据文件 datafile-1 和 datafile-2 删除,为了能够保证之前的快照数据不被破坏,在 snap-3 中增加指向这两个文件的移除指针。
下图展示了执行 snap-3 后的元数据内容,manifest-3 和 manifest-4 的 status-2 表示删除状态。manifest-5 指向的数据文
2.2. Manifest 合并
Iceberg 提供了合并 Manifest 文件的功能,可以通过如下两种方式来开启自动合并~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker!
评论
ValineTwikoo











