查询时,引擎会经历以下步骤:
先读取 pointer.txt,解析到当前最新快照或用户指定的历史快照。
从快照拿到要扫描的数据文件列表与其统计信息(分区、行数、列 min/max、行组统计、bloom 过滤器等)。
基于谓词做 分区裁剪 与 列统计裁剪 ,只保留可能命中的文件或行,并做 列裁剪与谓词下推 到 Parquet/ORC。
合并读取文件
CoW:直接读取被选中的最新文件。
MoR:读取 文件 + 增量 / 删除向量文件,在读取阶段完成 合并与应用删除。
综上,数据湖的本质是将复杂的数据操作转化为对元数据的原子操作,从而实现 ACID 事务与高效查询。接下来,我们将进一步对比 Iceberg、Delta Lake 与 Paimon 的实现差异。




