注意事项和限制 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

注意事项和限制

使用 Athena 读取 Apache Hudi 表时,请考虑以下几点。

  • 读取和写入操作:Athena 可以读取压缩的 Hudi 数据集,但不能写入 Hudi 数据。

  • Hudi 版本:Athena 支持 Hudi 版本 0.14.0(默认值)和 0.15.0。Athena 不保证与使用更高版本的 Hudi 创建的表具有读取兼容性。有关 Hudi 功能和版本控制的更多信息,请参阅 Apache 网站上的 Hudi 文档。请注意,Athena 上的 0.15.0 版 Hudi 连接器不支持引导启动表。要使用 Hudi 连接器 0.15.0,请设置以下表属性:

    ALTER TABLE table_name SET TBLPROPERTIES ('athena_enable_native_hudi_connector_implementation' = 'true')
  • 跨账户查询:Hudi 连接器 0.15.0 版不支持跨账户查询。

  • 查询类型:目前,Athena 支持快照查询和读取优化查询,但不支持增量查询。在 MOR 表上,所有在读取优化查询中显示的 数据均已压缩。这提供了良好的性能,但不包括最新的增量提交。快照查询包含最新的数据,但会但产生一些计算开销,这使得这些查询的性能降低。有关在表和查询类型之间权衡的更多信息,请参阅 Apache Hudi 文档中的表和查询类型

  • 增量查询 – Athena 不支持增量查询。

  • CTAS – Athena 不支持对 Hudi 数据执行 CTAS 或者 INSERT INTO。如果您希望 Athena 支持编写 Hudi 数据集,请将反馈发送至

    有关编写 Hudi 数据的更多信息,请参阅以下资源:

  • MSCK REPAIR TABLE – 不支持在 Athena 的 Hudi 表上使用 MSCK REPAIR TABLE。如果您需要加载未在 Amazon Glue 中创建的 Hudi 表,请使用 ALTER TABLE ADD PARTITION

  • 不支持跳过 Amazon Glacier 对象 – 如果 Apache Hudi 表中的对象属于 Amazon 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 Glacier 对象。在 ALTER TABLE 命令之后运行 SELECT 查询会继续返回所有对象。

  • 时间戳查询 – 当前,试图读取 Hudi 实时表中时间戳列的查询要么失败,要么产生空结果。此限制仅适用于读取时间戳列的查询。仅包含同一表中非时间戳列的查询会成功。

    失败的查询会返回类似于以下内容的消息:

    GENERIC_INTERNAL_ERROR: class org.apache.hadoop.io.ArrayWritable cannot be cast to class org.apache.hadoop.hive.serde2.io.TimestampWritableV2 (org.apache.hadoop.io.ArrayWritable and org.apache.hadoop.hive.serde2.io.TimestampWritableV2 are in unnamed module of loader io.trino.server.PluginClassLoader @75c67992)