

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Athena SQL 处理 Iceberg 表
<a name="iceberg-athena"></a>

Amazon Athena 为 Apache Iceberg 提供了内置支持，不需要额外的步骤或配置。本节详细概述了支持的功能，并提供了有关使用 Athena 与 Iceberg 表交互的高级指导。

## 版本和功能兼容性
<a name="athena-version"></a>

### 冰山桌规格支持
<a name="athena-table-spec"></a>

Apache Iceberg 表规范指定了 Iceberg 表的行为方式。Athena 支持表格格式版本 2，因此您使用控制台、CLI 或 SDK 创建的任何 Iceberg 表本质上都使用该版本。

[如果您使用使用其他引擎创建的 Iceberg 表，例如亚马逊 EMR 上的 Apache Spark 或 AWS Glue，请务必使用表属性来设置表格式版本。](https://iceberg.apache.org/docs/latest/configuration/#reserved-table-properties)作为参考，请参阅本指南前面的 “[创建和编写 Iceberg 表](iceberg-spark.md#spark-create-data)” 一节。

### 冰山功能支持
<a name="athena-feature"></a>

你可以使用 Athena 读取和写入 Iceberg 表。当您使用、和`DELETE FROM`语句更改数据时 `UPDATE``MERGE INTO`，Athena 仅支持模式。 merge-on-read此属性无法更改。要使用更新或删除数据 copy-on-write，您必须使用其他引擎，例如亚马逊 EM AWS Glue R 上的 Apache Spark 或。下表汇总了 Athena 中对 Iceberg 功能的支持。


<table>
<thead>
  <tr><th colspan="2"></th><th colspan="2">DDL 支持</th><th colspan="2">DML 支持</th><th>AWS Lake Formation 为了安全起见（可选）</th></tr>
</thead>
<tbody>
  <tr><td></td><td>表格格式</td><td>创建表</td><td>架构演变</td><td>读取数据</td><td>写入数据</td><td>行/列访问控制</td></tr>
  <tr><td rowspan="2">Amazon Athena</td><td rowspan="2">版本 2</td><td rowspan="2">✓</td><td rowspan="2">✓</td><td rowspan="2">✓</td><td>X C opy-on-write</td><td>✓</td></tr>
  <tr><td>✓ M erge-on-read</td><td>✓</td></tr>
</tbody>
</table>


**注意**  
Athena 不支持增量查询。
在 Athena 中，无论表属性中的写入时复制 (CoW) 设置如何，更新、删除和合并操作始终默认为读时合并 (MoR)，因为不支持 CoW。

## 使用 Iceberg 桌子
<a name="athena-tables"></a>

要快速开始在 Athena 中使用 Iceberg，请参阅本指南前面的 “在 Athena SQL [中使用 Iceberg 表入门” 一节](getting-started.md)。

下表列出了限制和建议。


| **场景** | **限制** | **建议** | 
| --- |--- |--- |
| 生成表 DDL | 使用其他引擎创建的 Iceberg 表可以具有在 Athena 中未公开的属性。对于这些表，无法生成 DDL。 | 在创建表的引擎中使用等效语句（例如，Spark 的`SHOW CREATE TABLE`语句）。 | 
| 写入冰山表的对象中的随机 Amazon S3 前缀 | 默认情况下，使用 Athena 创建的 Iceberg 表会启用该属性。`write.object-storage.enabled` | 要禁用此行为并获得对 Iceberg 表属性的完全控制权，请使用其他引擎（例如 Amazon EMR 上的 Spark 或）创建 Iceberg 表。 AWS Glue | 
| 递增查询 | Athena 目前不支持。 | 要使用增量查询来启用增量数据摄取管道，请在 Amazon EMR 上使用 Spark 或。 AWS Glue | 