在 Amazon Redshift 上使用 Apache Iceberg 表
本主题介绍如何将 Apache Iceberg 格式的表与 Redshift Spectrum 或 Redshift Serverless 结合使用。Apache Iceberg 是一种用于超大型分析表的高性能格式。
您可以使用 Redshift Spectrum 或 Redshift Serverless 来查询在 AWS 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 表:
使用兼容的服务(如 Amazon Athena 或 Amazon EMR)在 AWS Glue Data Catalog 数据库上创建 Apache Iceberg 表。要使用 Athena 创建 Iceberg 表,请参阅《Amazon Athena User Guide》中的Using Apache Iceberg tables。
使用允许访问您的数据湖的关联 IAM 角色,创建一个 Amazon Redshift 集群或 Redshift Serverless 工作组。有关如何创建集群或工作组的信息,请参阅《Amazon Redshift 入门指南》中的 Amazon Redshift 预置数据仓库入门和 Redshift Serverless 数据仓库入门。
使用查询编辑器 v2 或第三方 SQL 客户端连接到您的集群或工作组。有关如何使用查询编辑器 v2 进行连接的信息,请参阅《Amazon Redshift 管理指南》中的使用 SQL 客户端工具连接到 Amazon Redshift 数据仓库。
在 Amazon Redshift 数据库中为包含 Iceberg 表的特定数据目录数据库创建外部架构。有关创建外部架构的信息,请参阅Amazon Redshift Spectrum 中的外部架构。
运行 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 表进行只读访问。它支持事务一致性选择查询。您可以在 AWS 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。
-
AWS Lake Formation 精细访问控制 – Amazon Redshift 支持对 Apache Iceberg 表进行 AWS 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 定价
。