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

在 Amazon Redshift 上使用 Apache Iceberg 表

您可以使用 Redshift Spectrum 或 Redshift Serverless 来查询在 Amazon Glue Data Catalog 中编目的 Apache Iceberg 表。Apache Iceberg 是一种用于数据湖的开源表格式。有关更多信息,请参阅 Apache Iceberg 文档中的 Apache Iceberg

Amazon Redshift 为查询 Apache Iceberg 表提供事务一致性。在使用 Amazon Redshift 运行查询时,您可以使用符合 ACID(原子性、一致性、隔离、持久性)的服务(例如 Amazon Athena 和 Amazon EMR)来操作表中的数据。Amazon Redshift 可以使用存储在 Apache Iceberg 元数据中的表统计数据,来优化查询计划并减少查询处理期间的文件扫描。使用 Amazon Redshift SQL,您可以将 Redshift 表与数据湖表联接起来。

开始在 Amazon Redshift 上使用 Iceberg 表:

  1. 使用兼容的服务(如 Amazon Athena 或 Amazon EMR)在 Amazon Glue Data Catalog 数据库上创建 Apache Iceberg 表。要使用 Athena 创建 Iceberg 表,请参阅《Amazon Athena User Guide》中的Using Apache Iceberg tables

  2. 使用允许访问您的数据湖的关联 IAM 角色,创建一个 Amazon Redshift 集群或 Redshift Serverless 工作组。有关如何创建集群或工作组的信息,请参阅《Amazon Redshift 入门指南》中的 Amazon Redshift 预置集群Redshift Serverless

  3. 使用查询编辑器 v2 或第三方 SQL 客户端连接到您的集群或工作组。有关如何使用查询编辑器 v2 进行连接的信息,请参阅《Amazon Redshift 管理指南》中的使用 SQL 客户端工具连接到 Amazon Redshift 数据仓库

  4. 在 Amazon Redshift 数据库中为包含 Iceberg 表的特定数据目录数据库创建外部架构。有关创建外部架构的信息,请参阅为 Amazon Redshift Spectrum 创建外部 schema

  5. 运行 SQL 查询以访问您创建的外部架构中的 Iceberg 表。

在 Amazon Redshift 上使用 Apache Iceberg 表时的注意事项

在将 Amazon Redshift 与 Iceberg 表一起使用时,请考虑以下事项:

  • Iceberg 版本支持 – Amazon Redshift 支持对以下版本的 Iceberg 表运行查询:

    • 版本 1 定义了如何使用不可变数据文件管理大型分析表。

    • 版本 2 增加了支持行级更新和删除的功能,同时保持现有数据文件不变,并使用删除文件处理表数据更改。

    有关版本 1 表和版本 2 表之间的区别,请参阅 Apache Iceberg 文档中的Format version changes

  • 仅限查询 – Amazon Redshift 支持对 Apache Iceberg 表进行只读访问。它支持事务一致性选择查询。您可以在 Amazon Glue Data Catalog 中使用像 Amazon Athena 这样的服务来定义和更新 Iceberg 表的架构。

  • 添加分区 – 您无需为 Apache Iceberg 表手动添加分区。Amazon Redshift 会自动检测到 Apache Iceberg 表中的新分区,无需手动操作即可更新表定义中的分区。分区规格的任何更改也将自动应用于您的查询,无需任何用户干预。

  • 将 Iceberg 数据摄取到 Amazon Redshift 中 – 您可以使用 INSERT INTO 或 CREATE TABLE AS 命令,将数据从 Iceberg 表导入到本地 Amazon Redshift 表中。您目前无法使用 COPY 命令将 Apache Iceberg 表的内容摄取到本地 Amazon Redshift 表中。

  • 实体化视图 – 您可以在 Apache Iceberg 表上创建实体化视图,就像在 Amazon Redshift 中为任何其他外部表创建实体化视图一样。其他数据湖表格式的相同注意事项也适用于 Apache Iceberg 表。目前不支持对数据湖表执行增量更新、自动刷新、自动查询重写和自动 MV。

  • Amazon Lake Formation 精细访问控制 – Amazon Redshift 支持对 Apache Iceberg 表进行 Amazon Lake Formation 精细访问控制。

  • 用户定义的数据处理参数 – Amazon Redshift 支持对 Apache Iceberg 表使用用户定义的数据处理参数。您可以在现有文件上使用用户定义的数据处理参数,来定制要在外部表中查询的数据,以避免扫描错误。这些参数提供了处理表架构与文件中实际数据之间不匹配的功能。您也可以在 Apache Iceberg 表上使用用户定义的数据处理参数。

  • 数据共享 – Amazon Redshift 数据共享目前不支持数据湖表,包括 Apache Iceberg 表。

  • 时空旅行查询 – Apache Iceberg 表目前不支持时空旅行查询。

  • 定价 – 当您从集群访问 Iceberg 表时,您需要按照 Redshift Spectrum 定价付费。当您从工作组访问 Iceberg 表时,您需要按 Redshift Serverless 定价付费。有关 Redshift Spectrum 和 Redshift Serverless 定价的信息,请参阅 Amazon Redshift 定价