使用 Apache Iceberg V3 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Apache Iceberg V3

Apache Iceberg 版本 3(V3)是 Apache Iceberg 表格式规范的最新版本,此版本引入了高级功能用于构建 PB 级数据湖,同时改善性能并降低运营开销。V3 解决了 V2 中会遇到的常见性能瓶颈,尤其是在批量更新和合规删除方面。

Amazon 支持删除向量和行谱系,如 Apache Iceberg 版本 3(V3)规范中定义。这些功能可在下列服务中使用:Amazon EMR 7.12 上的 Apache Spark;Amazon Glue ETLAmazon SageMaker 融通式合作开发工作室笔记本;以及 Amazon Glue Data Catalog 中的 Apache Iceberg 表(包括 Amazon S3 表类数据存储服务)。

V3 中的主要功能

删除向量

将 V2 中的位置删除文件替换成存储为 Puffin 文件的高效二进制格式。这消除了随机批量更新和 GDPR 合规删除带来的写入放大,从而大幅降低维护刷新数据的开销。如果组织在处理高频率更新,可以立即体验到写入性能改进,并可以通过减少小文件来降低存储成本。

行谱系

实现了行级别的精确变更跟踪。您的下游系统可以通过递增方式处理更改,从而加快数据管道并降低更改数据捕获(CDC)工作流的计算成本。此内置功能消除了实施自定义变更跟踪的需求。

版本兼容性

V3 保持与 V2 表的向后兼容性。Amazon 服务同时支持 V2 和 V3 表,让您可以:

  • 在 V2 和 V3 表上运行查询

  • 无需数据重写即可将现有 V2 表升级到 V3

  • 执行跨 V2 和 V3 快照的时间旅行查询

  • 跨表版本使用架构演变和隐藏分区

重要

V3 是一个单向升级。表从 V2 升级到 V3 后,就无法通过标准操作将其降级回 V2。

开始使用 V3

先决条件

使用 V3 表之前,请确保您具有:

  • Amazon 账户和相应的 IAM 权限

  • 一项或多项 Amazon 分析服务(EMR、Glue、Amazon SageMaker 融通式合作开发工作室笔记本或 S3 表类数据存储服务)的访问权限

  • S3 存储桶,用于存储表数据和元数据

  • 表存储桶,用于开始使用 S3 表类数据存储服务,如果您在构建自己的 Iceberg 基础设施,则是 S3 通用存储桶

  • 已配置 Amazon Glue 目录

创建 V3 表

创建新 V3 表

要创建新 Iceberg V3 表,请将 format-version 表属性设置为 3。

使用 Spark SQL:

CREATE TABLE IF NOT EXISTS myns.orders_v3 ( order_id bigint, customer_id string, order_date date, total_amount decimal(10,2), status string, created_at timestamp ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )

将 V2 表升级到 V3

您可以自动将现有 V2 表升级到 V3 而无需重写数据。

使用 Spark SQL:

ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
重要

V3 是一个单向升级。表从 V2 升级到 V3 后,就无法通过标准操作将其降级回 V2。

升级期间发生的操作:

  • 以原子方式创建新的元数据快照

  • 重复使用现有的 Parquet 数据文件

  • 在表元数据中添加了行谱系字段

  • 下次压缩时将移除旧的 V2 删除文件

  • 新修改将使用 V3 的删除向量文件

  • 升级不会对行谱系变更跟踪记录执行历史回填

启用删除向量

要利用删除向量进行更新、删除和合并,请配置您的写入模式。

使用 Spark SQL:

ALTER TABLE myns.orders_v3 SET TBLPROPERTIES ('format-version' = '3', 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )

这些设置可确保更新、删除和合并操作创建删除向量文件,而不是重写整个数据文件。

利用行谱系进行变更跟踪

V3 会自动添加行谱系元数据字段用于跟踪更改。

使用 Spark SQL:

# Query with parameter value provided last_processed_sequence = 47 SELECT id, data, _row_id, _last_updated_sequence_number FROM myns.orders_v3 WHERE _last_updated_sequence_number > :last_processed_sequence

_row_id 字段唯一地标识每行,而 _last_updated_sequence_number 则跟踪上次修改该行的时间。使用这些字段可以:

  • 标识已更改的行来进行增量处理

  • 跟踪数据血统以确保合规性

  • 优化 CDC 管道

  • 仅处理更改过的内容,从而降低计算成本

V3 最佳实践

何时使用 V3

在以下情况下,可以考虑升级到 V3 或直接开始使用 V3:

  • 您经常执行批量更新或删除

  • 您需要满足 GDPR 或合规删除要求

  • 您的工作负载涉及频繁的更新插入

  • 您需要高效的 CDC 工作流

  • 您需要降低小文件的存储成本

  • 您需要更好的变更跟踪功能

优化写入性能

  • 为更新密集型工作负载启用删除向量:

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
  • 配置适当的文件大小:

    SET TBLPROPERTIES ( 'write.target-file-size-bytes' = '536870912' — 512 MB )

优化读取性能

  • 利用行谱系进行增量处理

  • 使用时间旅行访问历史数据而无需进行复制

  • 启用统计数据收集以更好地进行查询规划

迁移策略

从 V2 迁移到 V3:

  • 首先在非生产环境中进行测试:验证升级过程和性能

  • 在活动较少的时间段进行升级:尽可能减少对并发操作的影响

  • 监控初始性能:在升级后跟踪指标

  • 运行压缩:升级后合并删除文件

  • 更新文档:在团队文档中记录 V3 功能

兼容性注意事项

  • 引擎版本:确保所有访问表的引擎都支持 V3

  • 第三方工具:升级前验证 V3 兼容性

  • 备份策略:测试基于快照的恢复程序

  • 监控:更新 V3 特定指标的监控控制面板

问题排查

常见问题

错误:“不支持 format-version 3”
  • 验证您的引擎版本是否支持 V3

    V3 对 Amazon 服务的支持如下:

    服务 V3 支持
    EMR Spark 发行版 7.12+
    Amazon Glue ETL
    Amazon SageMaker 融通式合作开发工作室笔记本
    Amazon Glue:Iceberg REST API,表维护
    Amazon S3 表类数据存储服务:Iceberg REST API、表维护
    Amazon Athena(Trino)
  • 检查目录兼容性

  • 确保 Amazon 服务版本为最新

升级后的性能下降
  • 确认没有压缩故障。有关更多详细信息,请参阅 S3 表类数据存储服务的日志记录和监控

  • 检查是否启用了删除向量。确保已设置下列属性:

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
  • 您可以使用以下代码验证表属性:

    DESCRIBE FORMATTED myns.orders_v3
  • 查看分区策略。过度分区会产生小文件。运行以下查询来获取表的平均文件大小:

    SELECT avg(file_size_in_bytes) as avg_file_size_bytes FROM myns.orders_v3.files
与第三方工具不兼容
  • 验证工具是否支持 V3 规范

  • 考虑为不支持的工具维护 V2 表

  • 请联系工具供应商来了解 V3 支持时间表

获取帮助

  • Amazon Support:有关特定服务的问题,请联系 Amazon Support

  • Apache Iceberg 社区:Iceberg Slack

  • Amazon 文档:Amazon 分析文档

定价

可用性

所有提供 Amazon EMR、Amazon Glue Data Catalog、Amazon Glue ETL 和 S3 表类数据存储服务的 Amazon 区域均支持 Apache Iceberg V3。

其他资源