使用 Iceberg 表格格式规范版本 3 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Iceberg 表格格式规范版本 3

Apache Iceberg 表格式规范的最新版本是版本 3。此版本引入了用于构建 PB 级数据湖的高级功能,提高了性能并减少了运营开销。它解决了版本 2 中遇到的常见性能瓶颈,尤其是在批量更新和合规性删除操作方面。

AWS 为 Iceberg 版本 3 规范中定义的删除向量和行谱系提供支持。Apache Spark 在以下 AWS 服务版本中提供了这些功能。

AWS 服务 版本 3 支持

适用于 Apache Spark 的亚马逊 EMR

亚马逊 EMR 版本 7.12 及更高版本

AWS Glue

AWS Glue: I ceberg REST API,表格维护

Amazon SageMaker 统一工作室笔记本电脑

亚马逊 S3 表:I ceberg REST API表格维护

亚马逊 Athena(Trino)

版本 3 中的主要功能

删除向量将版本 2 中使用的位置删除文件替换为存储为 Puffin 文件的高效二进制格式。这消除了随机批量更新和《通用数据保护条例》(GDPR) 合规删除带来的写入放大,并显著降低了维护新数据的开销。处理高频更新的组织将看到写入性能立即得到改善,并通过减少小文件来降低存储成本。

行沿袭可在行级别实现精确的变化跟踪。您的下游系统可以逐步处理更改,从而加快数据管道并降低变更数据捕获 (CDC) 工作流程的计算成本。这种内置功能无需实现自定义变更跟踪。

版本兼容性

版本 3 保持了与版本 2 表的向后兼容性。AWS 服务同时支持版本 2 和版本 3 表,因此您可以:

  • 对版本 2 和版本 3 的表运行查询。

  • 无需重写数据,即可将现有版本 2 表升级到版本 3。

  • 运行跨版本 2 和版本 3 快照的时空旅行查询。

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

版本 3 入门

先决条件

在使用版本 3 的表之前,请确保您已具备以下条件:

  • AWS 账户 具有适当的 AWS Identity and Access Management (IAM) 权限。

  • 访问一项或多项 AWS 分析服务(亚马逊 EMR、 AWS Glue Amazon SageMaker Unified Studio 笔记本电脑或 Amazon S3 表)。

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

  • 用于开始使用 Amazon S3 表的表存储桶,或者如果您要自己构建 Iceberg 基础设施,则是通用的 S3 存储桶。

  • 已配置的 AWS Glue 目录。

创建版本 3 表

创建新表

要创建新的 Iceberg 版本 3 表,请将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' )

将版本 2 表升级到版本 3

无需重写数据,即可以原子方式将现有版本 2 表升级到版本 3。

使用 Spark SQL:

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

版本 3 是单向升级。表从版本 2 升级到版本 3 后,无法通过标准操作将其降级回版本 2。

升级期间会发生什么:

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

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

  • 行谱系字段已添加到表元数据中。

升级后:

  • 下一次压缩操作将删除旧版本 2 的删除文件。

  • 新的修改将使用版本 3 的删除矢量文件。

升级不会对行系变更跟踪记录进行历史回填。

启用删除向量

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

使用 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' )

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

使用行谱系进行变更跟踪

版本 3 会自动添加行谱系元数据字段以跟踪更改。

使用 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 管道。

  • 通过仅处理更改来降低计算成本。

版本 3 的最佳实践

何时使用版本 3

在以下情况下,可以考虑升级到版本 3 或从版本 3 开始:

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

  • 您需要满足 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 )

优化读取性能

  • 使用行谱系进行增量处理。

  • 使用时空旅行无需复制即可访问历史数据。

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

迁移策略

从版本 2 迁移到版本 3 时,请遵循以下最佳实践:

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

  • 在低活动期间进行升级,以最大限度地减少对并发操作的影响。

  • 监控初始性能,并在升级后跟踪指标。

  • 升级后运行压缩以合并已删除的文件。

  • 更新您的团队文档以反映版本 3 的功能。

兼容性注意事项

  • 引擎版本-确保访问该表的所有引擎都支持版本 3。

  • 第三方工具-在升级之前,请验证您的工具的版本 3 兼容性。

  • Backup 策略 — 测试基于快照的恢复程序。

  • 监控-更新针对版本 3 特定指标的监控仪表板。

故障排查

常见问题

错误:“不支持格式版本 3”

  • 确认您的引擎版本支持版本 3。 有关详细信息,请参阅本节开头的表格

  • 检查目录兼容性。

  • 请确保您使用的是最新版本的 AWS 服务。

升级后性能下降

  • 确认没有压实失败。有关更多信息,请参阅 Amazon S3 文档中的 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

与第三方工具不兼容

  • 验证该工具是否支持版本 3 规范。

  • 考虑为不支持的工具维护版本 2 表。

  • 请联系工具供应商了解其版本 3 支持时间表。

获取帮助

  • 有关 AWS 服务特定问题,请联系AWS 支持

  • 要从 Iceberg 社区获得帮助,请使用 Ic eberg Slack 频道

  • 有关使用 AWS 服务 管理分析工作负载的信息,请参阅上的 Anal ytics AWS。

定价

可用性

在 Amazon EMR AWS Glue、、 AWS Glue Data Catalog和 S3 表格运行的所有 AWS 区域 地方,都支持 Iceberg 表格式规范版本 3。有关区域可用性,请参阅AWS 服务 按地区划分

其他资源