查询 Linux Foundation Delta Lake 表 - Amazon Athena

查询 Linux Foundation Delta Lake 表

Linux Foundation Delta Lake 是一种用于大数据分析的表格格式。您可以使用 Amazon Athena 直接读取存储在 Amazon S3 中的 Delta Lake 表,无需生成清单文件或运行 MSCK REPAIR 语句。

Delta Lake 格式会存储每个数据文件每列的最小值和最大值。Athena 实施利用该信息在谓词上启用文件跳过,以消除不需要的文件。

注意事项和限制

Athena 中的 Delta Lake 支持具有以下注意事项和限制:

  • 仅包含 AWS Glue 目录的表 – 仅通过注册到 AWS Glue 的表支持原生 Delta Lake。如果 Delta Lake 表已注册到其他元存储,您仍可保留该表并将其视为主元存储。由于 Delta Lake 元数据存储在文件系统(例如 Amazon S3)中而不是元存储中,因此 Athena 只需 AWS Glue 中的位置属性即可从 Delta Lake 表中进行读取。

  • V3 engine only(仅限 V3 引擎)– 仅支持在 Athena 引擎版本 3 上进行 Delta Lake 查询。您必须确保创建的工作组配置为使用 Athena 引擎版本 3。

  • No time travel support(不支持时间旅行)– 不支持使用 Delta Lake 时间旅行功能的查询。

  • Read only(只读)– 不支持编写 UPDATEINSERT、或 DELETE 等 DML 语句。

  • Lake Formation 支持 – Lake Formation 集成可用于架构与 AWS Glue 同步的 Delta Lake 表。有关更多信息,请参阅《AWS Lake Formation 开发人员指南》中的 AWS Lake Formation 与 Amazon Athena 一起使用为 Delta Lake 表设置权限

  • Limited DDL support(有限的 DDL 支持)– 支持以下 DDL 语句:CREATE EXTERNAL TABLESHOW COLUMNSSHOW TBLPROPERTIESSHOW PARTITIONSSHOW CREATE TABLEDESCRIBE。有关使用 CREATE EXTERNAL TABLE 语句的信息,请参阅 开始使用 一节。

  • 不支持跳过 S3 Glacier 对象 – 如果 Linux Foundation Delta Lake 表中的对象属于 Amazon S3 Glacier 存储类,将 read_restored_glacier_objects 表属性设置为 false 则无效。

    例如,假设发出以下命令:

    ALTER TABLE table_name SET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')

    对于 Iceberg 和 Delta Lake 表,该命令会生成错误 Unsupported table property key: read_restored_glacier_objects。对于 Hudi 表,ALTER TABLE 命令不会产生错误,但是 Amazon S3 Glacier 对象仍无法跳过。在 ALTER TABLE 命令之后运行 SELECT 查询会继续返回所有对象。

Delta Lake 版本控制和 Athena

Athena 不使用 Delta Lake 文档中列出的版本控制。要确定您的 Delta Lake 表是否与 Athena 兼容,请考虑以下两个特征:

  • 读取器版本:每张 Delta Lake 表都提供读取器版本。目前,该版本为 1 到 3 的数字。如果查询包含 Athena 不支持的读取器版本的表,则查询将失败。

  • 表功能:每个 Delta Lake 表也可以声明一组读取器/写入器功能。由于 Athena 对 Delta Lake 为只读支持,因此表写入器功能的兼容性不适用。但是,对于包含不支持的表读取器功能的表,对其的查询将失败。

下表显示了 Athena 支持的 Delta Lake 读取器版本和 Delta Lake 桌面读取器功能。

查询类型 支持的读取器版本 支持的读取器功能
DQL(SELECT 语句) <= 3 列映射timestampnTZ删除向量
DDL <= 1 不适用。只能在读取器版本为 2 或更高版本的表上声明读取器功能。

要在 Athena 中创建读取器版本高于 1 的 Delta Lake 表,请参阅同步 Delta Lake 元数据