常用术语
数据文件(data files)
数据文件(data files)是 Iceberg 存储的真实的物理文件,一般是在表的数据存储目录的 data目录下。每次更新都会生成多个新的数据文件。
清单文件(Manifest file)
元数据文件,存储关于某个快照(snapshot)的数据文件列表。每行都是每个数据文件的详细描述,包括:
- 数据文件的状态
- 文件路径
- 分区信息
- 列级别的统计信息(比如每列的最大最小值、空值等)
- 文件的大小
- 文件里面数据的行数等信息
其中列级别的统计信息在 scan时为算子下推提供基础信息,以便过滤掉不必要的文件。每次更新都会生成多个新的清单文件。
清单列表(Manifest list)
元数据文件,存储清单文件的列表,每个清单占据一行,每行中存储了清单文件的路径。清单文件里面存储数据文件的分区范围、数据文件增加、删除等信息。这些信息用于查询过滤。每次更新都会生成多个新的清单文件。
快照(Snapshot)
代表一张表在某个时刻的状态。每个快照都会列出在某个时刻的所有数据文件列表。Data files 存储在不同的 Manifest files 里面,而 Manifest files 是存储在一个 Manifest list 文件里面,而一个 Manifest list 文件代表一个快照。
核心原理

Iceberg 中 partition 字段就是表中的一个字段,Iceberg 中每一张表都有一个对应的元数据表,文件元数据表中每条记录表示一个文件的相关信息,这些信息中有一个字段是 partition 字段,表示这个文件所在的 partition。
