Iceberg 表规范
这是 Iceberg 表格格式的规范,用于在分布式文件系统或键值存储中,将大型、缓慢变化的文件集作为表来管理。
Version 1: 分析数据表
Iceberg Version 1是当前版本。 它定义了如何使用不可变的文件格式(如 Parquet、 Avro 和 ORC)来管理大型分析表。
Version 2:行级删除
Iceberg 社区目前正在开发支持编码行级删除的 Iceberg 格式的第2版。V2规范是不完整的,可能会改变,直到它被完成和采用。 这个文档包括暂时的 v2格式要求,但是目前没有与未完成的 v2规范的兼容性保证。
版本2的目标是提供一种对行级删除进行编码的方法。 此更新可用于在不重写文件的情况下删除delete或更新update不可变数据文件中的单个行。
Goals
- 快照隔离 – 读操作将与并发写操作隔离,并始终使用表数据的已提交快照。写操作将支持在单个操作中删除和添加文件,并且永远不会部分可见。
Readers 无法获得锁。 - 速度–操作将使用 O(1)的时间复杂度来远程调用规划扫描文件,而不是O (n) ,其中 n 随表的大小增长,如分区或文件的数量。
- 规模– 作业计划将主要由客户端处理,而不是在中央元数据存储上出现瓶颈。 元数据将包括基于成本的优化所需的信息。
- 进化– 表将支持完整的模式和分区规范演进。 架构进化支持安全的列添加、删除、重新排序和重命名,包括在嵌套结构中。
- 可靠的类型 – 表将为一组核心类型提供定义良好且可靠的支持。
- 储存间隔 – 分区将是表配置。 读操作将使用数据值上的谓词而不是分区值来计划。表将支持不断发展的分区schema。
- 格式–基础数据文