

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

# 考量和限制
<a name="querying-hudi-in-athena-considerations-and-limitations"></a>

當您使用 Athena 讀取 Apache Hudi 資料表時，請考慮下列幾點。
+ **讀取和寫入操作** – Athena 可以讀取壓縮的 Hudi 資料集，但無法寫入 Hudi 資料。
+ **Hudi 版本** – Athena 支援 Hudi 版本 0.14.0 （預設） 和 0.15.0。Athena 無法保證與使用較新版本 Hudi 建立之資料表的讀取相容性。如需有關 Hudi 功能和版本控制的詳細資訊，請參閱 Apache 網站上的 [Hudi 文件](https://hudi.apache.org/)。請注意，Athena 上的 Hudi 連接器 0.15.0 版不支援引導資料表。若要使用 Hudi 連接器的 0.15.0，請設定下列資料表屬性：

  ```
  ALTER TABLE table_name SET TBLPROPERTIES ('athena_enable_native_hudi_connector_implementation' = 'true')
  ```
+ **跨帳戶查詢** – Hudi 連接器的 0.15.0 版不支援跨帳戶查詢。
+ **查詢類型** – 目前，Athena 支援快照查詢和讀取最佳化查詢，但不支援增量查詢。在 MoR 資料表上，所有公開給讀取最佳化查詢的資料均經過壓縮。這可提供良好的效能，但不包含最新的 delta 遞交。快照查詢包含最新資料，但會產生一些運算開銷，這使得這些查詢的效能較為不佳。如需有關資料表和查詢類型之間取捨的詳細資訊，請參閱 Apache Hudi 文件中的[資料表和查詢類型](https://hudi.apache.org/docs/table_types/)。
+ **增量查詢** – Athena 不支援增量查詢。
+ **CTAS** – Athena 不支援對 Hudi 資料執行 [CTAS](ctas.md) 或 [INSERT INTO](insert-into.md)。如果您希望 Athena 提供寫入 Hudi 資料集的支援，請將意見回饋傳送至 athena-feedback@amazon.com。

  如需有關寫入 Hudi 資料的詳細資訊，請參閱下列資源：
  + 《[Amazon EMR 版本指南](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/)》中的[使用 Hudi 資料集](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hudi-work-with-dataset.html)。
  + Apache Hudi 文件中的[寫入資料](https://hudi.apache.org/docs/0.8.0/writing_data.html)。
+ **MSCK REPAIR TABLE** – 不支援在 Athena 中對 Hudi 資料表使用 MSCK REPAIR TABLE。如果您需要載入未在 中建立的 Hudi 資料表 AWS Glue，請使用 [ALTER TABLE ADD PARTITION](alter-table-add-partition.md)。
+ **略過不支援的 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 資料表，此命令會產生錯誤不支援的資料表屬性索引鍵：read\$1restored\$1glacier\$1objects。對於 Hudi 資料表，`ALTER TABLE` 命令不會產生錯誤，但是 Amazon Glacier 物件仍不會略過。在 `ALTER TABLE` 命令繼續傳回所有物件之後執行 `SELECT` 查詢。
+ **時間戳記查詢** – 目前，嘗試讀取 Hudi 即時資料表中的時間戳記資料欄的查詢可能會失敗，也可能會產生空白結果。此限制僅適用於讀取時間戳記資料欄的查詢。僅包含相同資料表中非時間戳記資料欄的查詢會成功。

  失敗的查詢會傳回類似下列瑣所示的訊息：

  GENERIC\$1INTERNAL\$1ERROR：類別 org.apache.hadoop.io.ArrayWritable 無法轉換為類別 org.apache.hadoop.hive.serde2.io.TimestampWritableV2 (org.apache.hadoop.io.ArrayWritable 和 org.apache.hadoop.hive.serde2.io.TimestampWritableV2 位於載入器 io.trino.server.PluginClassLoader @75c67992 的未命名模組中）
+ **0.15.0 Hudi Connector 上的 Lake Formation 許可** – 此限制僅適用於透過將資料表屬性設定為 來選擇使用原生 Hudi 連接器 (0.15.0 版） `athena_enable_native_hudi_connector_implementation` 時`true`。根據預設，Athena 使用 Hudi 連接器 0.14.0 版，這不需要此額外許可。若要查詢 Lake Formation 保護的資料表，您必須將 Lake Formation 許可授予資料表的資料位置和`.hoodie`中繼資料目錄。例如，如果您的 Hudi 資料表位於 `s3://bucket/hudi-table/`，您必須註冊並授予許可給 Lake Formation `s3://bucket/hudi-table/.hoodie/`中的 `s3://bucket/hudi-table/`和 。`.hoodie` 目錄包含 Athena 在查詢規劃期間需要讀取的中繼資料檔案 （例如 `hoodie.properties`)。如果沒有`.hoodie`目錄的許可，查詢將會失敗，並出現許可遭拒錯誤。