Iceberg发布版本历程


发布于 2024-08-03 / 202 阅读 / 0 评论 /
iceberg的发布版本内容和发布时间。 Iceberg设计的初衷是为了解决Hive离线数仓计算慢的问题,经过多年迭代已经发展成为构建数据湖服务的表格式标准。

iceberg发布版本信息可参考官方文档https://iceberg.apache.org/releases/

Iceberg-1.x

iceberg 1.x系列共有以下版本,基本上是3~4个月新增一个版本。

1.9.0(2025-04-28)

官方发布文档https://iceberg.apache.org/releases/#190-release

Apache Iceberg 1.9.0 新特性缩小与 Delta Lake 差距,支持行级操作、variant数据类型和地理空间数据。新增 iceberg-delta-lake 模块简化迁移,REST Catalog 增强企业级特性。拥抱云原生,放弃 Hadoop 2 和 Spark 3.3。融合加速 Lakehouse 标准化,对象存储是关键。

具体的新功能有

(1)增强的行级操作

Iceberg 1.9.0 允许等值删除和行沿袭跟踪共存。这一进步使得能够基于指定条件精确删除行,并为插入或更新的行分配唯一的行 ID,从而促进准确的数据版本控制和审计。

Delta Lake 长期以来一直支持这种行级变更和沿袭跟踪。Iceberg 现在也具备了这种能力,缩小了两者之间的功能差距。

(2)Delta Lake 到 Iceberg 的迁移

Iceberg 提供了一种通过 iceberg-delta-lake 模块从 Delta Lake 迁移的结构化方法。该模块提供了 snapshotDeltaLakeTable 操作,允许创建引用现有 Delta Lake 表的数据文件的 Iceberg 表,而无需数据重复。它还支持在迁移期间维护事务历史记录,从而确保数据操作的连续性。

结果是一种更直接、更高效的从 Delta 迁移到 Iceberg 的方式,并且清楚地表明 Iceberg 正在成为主要的开放表格式。

(3)Variant 数据类型支持

Iceberg 1.9.0 引入了一个 variant 逻辑类型,用于以二进制格式存储半结构化数据(如 JSON)。这避免了解析和将 JSON 存储为字符串的性能开销。

这个想法直接来自 Delta Lake,后者引入了相同的功能,以将查询性能提高到基准测试场景中的八倍。Iceberg 采用此功能使其成为具有半结构化数据(如涉及日志和事件)的低延迟工作负载的可行选择。

(4)原生地理空间支持

Iceberg 1.9.0 添加了一个新的 geometry 逻辑类型,从而可以高效地存储和查询空间数据集。主要功能包括:

  • 支持 Well-Known Binary (WKB) 编码。

  • 默认坐标参考系 (CRS) 设置为 OGC:CRS84。

  • 对 XY、XYZ、XYM 和 XYZM 坐标格式的多维支持。

  • 可选的空间统计信息,如边界框,以提高查询性能和空间索引。

此地理空间模型与 GeoParquet 规范保持一致,从而确保与开放数据标准的兼容性。这是 Iceberg(以及数据社区)围绕通用标准发展的一个例子。

(5)REST Catalog:更适合企业

REST catalog 身份验证的改进包括:

  • 支持可插拔的身份验证处理程序。

  • 更清晰的身份验证和请求逻辑分离。

  • 扩展了对企业身份系统的测试。

这是生产级部署的基础性更新,这些部署使用 Iceberg REST 目录进行多引擎或多租户环境,这是企业数据湖仓部署中非常常见的用例。

(6)弃用旧版本:Hadoop 2 和 Spark 3.3 已删除

已删除对 Hadoop 2 和 Spark 3.3 的支持。这不仅仅是清理工作:这是一个信号。如果您仍然受限于旧的 Hadoop 基础设施,那么现在是规划您的退出的时候了。Iceberg 正在朝着现代运行时、云原生存储和横向扩展计算的方向发展。

(7)其他值得关注的点

  • 分区统计信息 API: 公开分区级别的元数据,以实现更好的规划和修剪。

  • 纳秒时间戳支持: 扩展了 Parquet 后端的精度。

  • InternalData API: 改进了 Spark、Flink 和 Trino 等引擎的集成路径。

1.8.0(2025-02-13)

官方发布文档https://iceberg.apache.org/releases/#180-release

主要发布内容有

1.7.0(2024-11-18)

官方发布文档https://iceberg.apache.org/releases/#170-release

主要发布内容有

1.6.0(2024-07-25)

官方发布文档https://iceberg.apache.org/releases/#160-release

这个版本包含以下特性。

构建工具升级:

(1)构建工具升级到gradle-8.9版本

11个依赖组件升级,升级到以下版本:

(1)Nessie 0.92.1

(2)升级Spark 从 3.5 到 3.5.1

(3)Apache Arrow 15.0.2

(4)Azure SDK to 1.2.25

(5)Kryo 4.0.3

(6)Netty 4.1.111.Final

(7)Jetty 9.4.55.v20240627

(8)Kafka 3.7.1

(9)Apache ORC 1.9.3

(10)AWS SDK 2.26.12

(11)Google Cloud Libraries 26.43.0

1.5.0(2024-03-11)

1.5.0、1.5.1、1.5.2共三个版本

官方发布文档可参考https://iceberg.apache.org/releases/#150-release

这个版本包含以下特性。

3个接口变更:

(1)扩展FileIO接口,新增EncryptingFileIO接口

(2)TableMetadata中分区统计数据跟踪

(3)新增sqlFor接口

7个核心功能变更:

(1)新增REST catalog视图

(2)新增JDBC catalog视图

(3)新增glue、jdbc、nessie三种catalog类型

(4)Avro文件支持AES GCM流加密

(5)增加REST catalog表会话缓存

(6)新增元数据压缩视图

(7)生成执行计划后,根据列统计数据过滤

1.4.0(2023-10-08)

1.4.0、1.4.1、1.4.2、1.4.3共四个版本

1.3.0(2023-06-01)

1.3.0和1.3.1

1.2.0(2023-03-21)

1.2.0和1.2.1

1.1.0(2022-11-28)

1.1.0

1.0.0(2022-11-03)

1.0.0

Iceberg-0.x

在0.8版本中,iceberg顺利从apache孵化器毕业,成为顶级项目。

iceberg 0.x系列共有以下版本,大概4~5个月新增一个特性版本。

0.14.0(2022-07-16)

0.14.0和0.14.1

0.13.0(2022-02-04)

0.13.0、0.13.1、0.13.2

0.12.0(2021-08-15)

0.12.0和0.12.1

0.11.0(2021-01-27)

0.11.0和0.11.1

0.10.0(2020-11-13)

0.10.0

0.9.0(2020-07-14)

0.9.0和0.9.1

孵化中版本

共经过了两个版本的孵化。

0.8.0(2020-05-07)

0.8.0-incubating

0.7.0(2019-10-26)

0.7.0-incubating