

# 查询 Apache Iceberg 表
<a name="querying-iceberg"></a>

您可以使用 Athena 对 Apache Iceberg 表进行读取、时间旅行、写入和 DDL 查询操作。

[Apache Iceberg](https://iceberg.apache.org/) 是适用于超大型分析数据集的开放表格式。Iceberg 以表的形式管理大量文件，并支持现代分析数据湖操作，例如记录级插入、更新、删除和时间旅行查询。Iceberg 规范支持表无缝发展，例如架构和分区发展，且其设计针对在 Amazon S3 上的使用进行了优化。Iceberg 还有助于在并发写入场景下保证数据的正确性。

有关 Apache Iceberg 的更多信息，请参阅 [https://iceberg.apache.org/](https://iceberg.apache.org/)。

## 注意事项和限制
<a name="querying-iceberg-considerations-and-limitations"></a>

Athena 对 Iceberg 表的支持具有以下考虑和限制：
+ **Iceberg 版本支持** – Athena 支持 Apache Iceberg 版本 1.4.2。
+ **向 Lake Formation 注册的表** — Athena 目前不支持在向 Lake Formation 注册的 Iceberg 表上进行 DDL 操作。
+ **针对信息架构的查询** — 在查询 Iceberg 表的信息架构时，Athena 将 S3 元数据用作列元数据的可信来源。这意味着列信息来自底层 S3 文件，而非目录元数据。该行为与其他表格式不同，在其他表格式中，目录元数据可能是列信息的主要来源。
+ **仅限包含 Amazon Glue 目录的表** – Athena 仅支持根据由[开源 Glue 目录实施](https://iceberg.apache.org/docs/latest/aws/#glue-catalog)所定义的规范在 Amazon Glue 目录上创建的 Iceberg 表。
+ **Amazon Glue 仅支持表锁定** – 与支持插件自定义锁的开源 Glue 目录实施不同，Athena 仅支持 Amazon Glue 乐观锁。使用 Athena 修改具有任何其他锁实施的 Iceberg 表将丢失潜在数据并中断事务。
+ **支持的文件格式** – Athena 引擎版本 3 支持以下 Iceberg 文件格式。
  + Parquet
  + ORC
  + Avro
+ **Iceberg 受限元数据** – Lake Formation 不会评估 Iceberg 元数据表。因此，如果基础表上存在任何 Lake Formation 行或单元格筛选条件，或者您无权查看基础表中的所有列，则 Iceberg 元数据表将受到限制。在这种情况下，查询 `$partitions`、`$files`、`$manifests` 和 `$snapshots` Iceberg 元数据表时将会失败并收到 `AccessDeniedException` 错误。此外，元数据列 `$path` 具有相同的 Lake Formation 限制，查询选中该列时也会失败。无论是否存在 Lake Formation 筛选条件，都可以查询所有其他元数据表。有关更多信息，请参阅 [Metadata tables](https://trino.io/docs/current/connector/iceberg.html#metadata-tables)。
+ **Iceberg v2 表** – Athena 仅在 Iceberg v2 表上进行创建和操作。有关 v1 和 v2 表之间的区别，请参阅 Apache Iceberg 文档中的[格式版本更改](https://iceberg.apache.org/spec/#appendix-e-format-version-changes)。
+ **显示没有时区的时间类型** – 没有时区类型的时间和时间戳以 UTC 格式显示。如果在时间列的筛选条件表达式中未指定时区，则使用 UTC。
+ **时间戳相关的数据精度** – 虽然 Iceberg 对时间戳数据类型支持微秒精度，但 Athena 仅对读写操作中的时间戳支持毫秒精度。在与时间相关的列中，Athena 只对在手动压缩操作过程中重写的数据保留毫秒精度。
+ **不支持的操作** – Iceberg 表格不支持以下 Athena 操作。
  + [ALTER TABLE SET LOCATION](alter-table-set-location.md)
+ **视图** – 使用 `CREATE VIEW` 创建 Athena 视图，如 [使用视图](views.md) 中所述。如果您想使用 [Iceberg 视图规范](https://github.com/apache/iceberg/blob/master/format/view-spec.md)创建视图，请联系 [athena-feedback@amazon.com](mailto:athena-feedback@amazon.com)。
+ **Amazon Lake Formation 中不支持 TTF 管理命令** — 尽管您可以使用 Lake Formation 管理 Apache Iceberg、Apache Hudi 和 Linux Foundation Delta Lake 等 TransactionTable 格式（TTF）的读取访问权限，但您不能使用 Lake Formation 管理诸如 `VACUUM`、`MERGE`、`UPDATE` 或 `OPTIMIZE` 使用这些表格格式之类的操作的权限。有关 Lake Formation 与 Athena 集成的更多信息，请参阅《*Amazon Lake Formation 开发人员指南*》中的[将 Amazon Lake Formation 与 Amazon Athena 一起使用](https://docs.amazonaws.cn/lake-formation/latest/dg/athena-lf.html)。
+ **按嵌套字段分区** — 不支持按嵌套字段进行分区。尝试这样做会生成消息 NOT\$1SUPPORTED：不支持按嵌套字段进行分区： *column\$1name*.*nested\$1field\$1name*。
+ **不支持跳过 Amazon Glacier 对象** – 如果 Apache Iceberg 表中的对象属于 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\$1restored\$1glacier\$1objects。对于 Hudi 表，`ALTER TABLE` 命令不会产生错误，但是仍无法跳过 Amazon Glacier 对象。在 `ALTER TABLE` 命令之后运行 `SELECT` 查询会继续返回所有对象。

若您希望 Athena 支持特定功能，请将反馈发送至 [athena-feedback@amazon.com](mailto:athena-feedback@amazon.com)。

**Topics**
+ [注意事项和限制](#querying-iceberg-considerations-and-limitations)
+ [创建 Iceberg 表](querying-iceberg-creating-tables.md)
+ [查询 Iceberg 表数据](querying-iceberg-table-data.md)
+ [执行时间旅行和版本旅行查询](querying-iceberg-time-travel-and-version-travel-queries.md)
+ [更新 Iceberg 表数据](querying-iceberg-updating-iceberg-table-data.md)
+ [管理 Iceberg 表](querying-iceberg-managing-tables.md)
+ [Iceberg 表架构演进](querying-iceberg-evolving-table-schema.md)
+ [对 Iceberg 表这些其他 DDL 操作](querying-iceberg-additional-operations.md)
+ [优化 Iceberg 表](querying-iceberg-data-optimization.md)
+ [查询 Amazon Glue Data Catalog 实体化视图](querying-iceberg-gdc-mv.md)
+ [Athena 中支持的 Iceberg 表数据类型。](querying-iceberg-supported-data-types.md)
+ [其他资源](querying-iceberg-additional-resources.md)