您可以使用 Amazon Ion Hive SerDe 查询以 Amazon Ion
Amazon Ion 具有可互换的二进制格式和文本格式。此功能结合了文本的易用性和二进制编码的效率。
若要从 Athena 查询 Amazon Ion 数据,您可以使用 Amazon Ion Hive SerDeCREATE TABLE AS
SELECT
(CTAS)或 INSERT INTO
查询从现有表中复制数据来生成 Amazon Ion 格式的数据。
注意
由于 Amazon Ion 是 JSON 的超集,因此您可以使用 Amazon Ion Hive SerDe 查询非 Amazon Ion JSON 数据集。与其他 JSON SerDe 库不同,Amazon Ion SerDe 不希望每行数据都在一行上。如果您想查询“漂亮打印”格式的 JSON 数据集,或以其他方式采用换行符将字段拆分为一行,则此功能非常有用。
有关使用 Athena 查询 Amazon Ion 的其他信息和示例,请参阅使用 Amazon Athena 分析 Amazon Ion 数据集
序列化库名称
Amazon Ion SerDe 的序列化库名称为 com.amazon.ionhiveserde.IonHiveSerDe
。有关源代码信息,请参阅 GitHub.com 上的 Amazon Ion Hive SerDe
注意事项和限制
-
重复的字段 – 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 符号必须是字符串类型。 -
联合类型 – Athena 目前不支持 Hive 联合类型
。 -
双精度数据类型 – Amazon Ion 目前不支持
double
数据类型。