

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

Amazon Athena 提供 Apache Iceberg 的內建支援，不需要額外的步驟或組態。本節提供使用 Athena 與 Iceberg 資料表互動的支援功能和高階指引的詳細概觀。

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

### Iceberg 資料表規格支援
<a name="athena-table-spec"></a>

Apache Iceberg 資料表規格指定 Iceberg 資料表的行為。Athena 支援資料表格式第 2 版，因此您使用主控台、CLI 或 SDK 建立的任何 Iceberg 資料表本質上都會使用該版本。

如果您使用與另一個引擎建立的 Iceberg 資料表，例如 Amazon EMR 上的 Apache Spark，或者 AWS Glue，請務必使用資料表[屬性來設定資料表](https://iceberg.apache.org/docs/latest/configuration/#reserved-table-properties)格式版本。做為參考，請參閱本指南稍早的[建立和撰寫 Iceberg 資料表](iceberg-spark.md#spark-create-data)一節。

### Iceberg 功能支援
<a name="athena-feature"></a>

您可以使用 Athena 從 Iceberg 資料表讀取和寫入。當您使用 `UPDATE`、 `MERGE INTO`和 `DELETE FROM`陳述式變更資料時，Athena 僅支援merge-on-read模式。此屬性無法變更。若要使用copy-on-write更新或刪除資料，您必須使用其他引擎，例如 Amazon EMR 上的 Apache Spark 或 AWS Glue。下表摘要說明 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  Copy-on-write</td><td>✓</td></tr>
  <tr><td>✓  Merge-on-read</td><td>✓</td></tr>
</tbody>
</table>


**注意**  
Athena 不支援增量查詢。
在 Athena 中，更新、刪除和合併操作一律預設為在讀取時合併 (MoR)，無論資料表屬性中的任何寫入時複製 (CoW) 設定為何，因為不支援 CoW。

## 使用 Iceberg 資料表
<a name="athena-tables"></a>

如需在 Athena 中使用 Iceberg 的快速入門，請參閱本指南稍早的 [Athena SQL 中的 Iceberg 資料表入門](getting-started.md)一節。

下表列出限制和建議。


| **情況** | **限制** | **建議** | 
| --- |--- |--- |
| 資料表 DDL 產生 | 使用其他引擎建立的 Iceberg 資料表可以具有未在 Athena 中公開的屬性。對於這些資料表，無法產生 DDL。 | 在建立資料表的引擎中使用對等陳述式 （例如 Spark 的 `SHOW CREATE TABLE`陳述式）。 | 
| 寫入 Iceberg 資料表之物件中的隨機 Amazon S3 字首 | 根據預設，使用 Athena 建立的 Iceberg 資料表已啟用 `write.object-storage.enabled` 屬性。 | 若要停用此行為並完全控制 Iceberg 資料表屬性，請使用其他引擎建立 Iceberg 資料表，例如 Amazon EMR 上的 Spark 或 AWS Glue。 | 
| 增量查詢 | Athena 目前不支援。 | 若要使用增量查詢來啟用增量資料擷取管道，請在 Amazon EMR 或 上使用 Spark AWS Glue。 | 