

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

# Amazon Ion Hive SerDe
<a name="ion-serde"></a>

您可以使用 Amazon Ion Hive SerDe 來查詢以 [Amazon Ion](https://amzn.github.io/ion-docs/guides/cookbook.html) 格式存放的資料。Amazon Ion 是一種豐富類型、自行描述、開放原始碼資料格式。Amazon Ion 格式可在開放原始碼 SQL 查詢語言 [PartiQL](https://partiql.org/) 中使用。

Amazon Ion 具有可互換的二進位格式和文字格式。此功能結合了文字的易用性和二進位編碼的效率。

要從 Athena 查詢 Amazon Ion 資料，您可以使用 [Amazon Ion Hive SerDe](https://github.com/amzn/ion-hive-serde)，且其可將 Amazon Ion 資料序列化和還原序列化。還原序列化允許您對 Amazon Ion 資料執行查詢，或讀取資料以便寫出至 Parquet 或 ORC 等不同格式。藉助序列化，您可以透過使用 `CREATE TABLE AS SELECT` (CTAS) 或 `INSERT INTO` 查詢從現有資料表中複製資料，以產生 Amazon Ion 格式的資料。

**注意**  
由於 Amazon Ion 是 JSON 的超集，因此您可以使用 Amazon Ion Hive SerDe 來查詢非 Amazon Ion JSON 資料集。與其他 [JSON SerDe 程式庫](https://docs.aws.amazon.com/athena/latest/ug/json-serde.html)不同，Amazon Ion SerDe 不期望每一資料列都位於單獨一行上。如果您想查詢使用「美化顯示」格式的 JSON 資料集，或以其他方式用新行字元分解資料列中的欄位，則此功能非常有用。

如需使用 Athena 查詢 Amazon Ion 的其他資訊和範例，請參閱[使用 Amazon Athena 分析 Amazon Ion 資料集](https://aws.amazon.com/blogs/big-data/analyze-amazon-ion-datasets-using-amazon-athena/)。

## 序列化程式庫名稱
<a name="library-name"></a>

Amazon Ion SerDe 的序列化程式庫名稱為 `com.amazon.ionhiveserde.IonHiveSerDe`。如需原始程式碼資訊，請參閱 GitHub.com 上的 [Amazon Ion Hive SerDe](https://github.com/amazon-ion/ion-hive-serde)。

## 考量和限制
<a name="ion-serde-considerations-and-limitations"></a>
+ **重複的欄位** – Amazon Ion 結構井然有序並支援重複的欄位，而 Hive 的 `STRUCT<>` 和 `MAP<>` 並非如此。因此，當您從 Amazon Ion 結構中將重複的欄位還原序列化時，將非確定性地選擇一個值，而忽略其他值。
+ **不支援外部符號資料表** – 目前，Athena 不支援外部符號資料表或以下 Amazon Ion Hive SerDe 屬性：
  + `ion.catalog.class`
  + `ion.catalog.file`
  + `ion.catalog.url`
  + `ion.symbol_table_imports`
+ **檔案副檔名** – Amazon Ion 使用檔案副檔名來確定用於還原序列化 Amazon Ion 檔案的壓縮轉碼器。因此，壓縮檔案必須具有與所使用的壓縮演算法相對應的檔案副檔名。例如，如果使用 ZSTD，則相應的檔案應該具有副檔名 `.zst`。
+ **同質資料**– Amazon Ion 對可用於特定欄位中的值的資料類型沒有限制。例如，兩個不同的 Amazon Ion 文件可能包含一個具有不同資料類型及相同名稱的欄位。但是，由於 Hive 使用結構描述，所以擷取到單一 Hive 資料欄的所有值都必須具有相同的資料類型。
+ **映射金鑰類型限制** – 將其他格式的資料序列化為 Amazon Ion 時，請確認映射金鑰類型是 `STRING`、`VARCHAR` 或 `CHAR`。雖然 Hive 允許您使用任何基本資料類型作為映射金鑰，但 [Amazon Ion 符號](https://amzn.github.io/ion-docs/docs/symbols.html)必須是字串類型。
+ **Union 類型** – Athena 目前不支援 Hive [Union 類型](https://cwiki.apache.org/confluence/display/hive/languagemanual+types/#LanguageManualTypes-UnionTypesunionUnionTypes)。
+ **雙精確度資料類型** – Amazon Ion 目前不支援資 `double` 料類型。

**Topics**
+ [序列化程式庫名稱](#library-name)
+ [考量和限制](#ion-serde-considerations-and-limitations)
+ [建立 Amazon Ion 資料表](ion-serde-using-create-table.md)
+ [使用 CTAS 和 INSERT INTO 來建立 Amazon Ion 資料表](ion-serde-using-ctas-and-insert-into-to-create-ion-tables.md)
+ [Amazon Ion SerDe 屬性參考](ion-serde-using-ion-serde-properties.md)
+ [使用路徑擷取器](ion-serde-using-path-extractors.md)