一、概述

如图所示,Iceberg 在数据写入的时候:

  1. Iceberg 先把数据写入到 DataFile 文件中
  2. 当一组 DataFile 文件写完之后,会根据这个 DataFile 文件中 column 的一些统计信息(如: 每个 column 的 min/max 值),生成一个对应的 manifest 文件
  3. 然后 Iceberg 把一次写入后涉及到的 manifest 文件组成一个 manifest list, manifest list 文件中也会存入一些相 manifest 的统计信息(如: 分区信息等)
  4. 然后按照整个 manifest list 生成一个对应的 snapshot 文件
  5. 生成完 snapshot 文件之后,Iceberg 会把当前 snapshot 的 ID 及存储路径等信息写人到 metadata.json 中。
  6. 当一切准备完毕之后,会以原子操作的方式提交元数据文件 metadata.json

二、设计