如何以 CSV 以外的数据格式存储 Amazon Athena 查询的输出?

1 分钟阅读
0

我想以 CSV 以外的格式存储 Amazon Athena 查询结果,例如 JSON 或 Parquet。

简短描述

运行 SELECT 查询时,Athena 仅支持 CSV 格式的输出文件。要以 CSV 以外的格式存储 Athena 的输出,请选择以下选项之一:

UNLOAD 语句以几种不同的数据格式写入 SELECT 查询的输出,但不创建新表。CTAS 查询也会以不同的数据格式写入输出,但会使用该输出创建一个新表。UNLOAD 和 CTAS 都支持 Apache Parquet、ORC、Apache Avro 和 JSON 等格式。

**注意:**UNLOAD 和 CTAS 都支持分区,但只有 CTAS 支持分桶。

解决方法

运行 UNLOAD 查询

要使用 UNLOAD 语句,请将您的 SELECT 查询放在 UNLOAD 后的括号中,并在 WITH 语句中指定文件类型。例如,以下查询将 SELECT 的输出作为 JSON 文件保存在 Amazon Simple Storage Service (Amazon S3) 存储桶 amzn-s3-example-bucket 中:

UNLOAD (SELECT col1, col2 FROM example_table)
    TO 's3://amzn-s3-example-bucket/example_folder/'
  WITH (format = 'JSON')

有关如何修改 UNLOAD 输出的更多信息,请参阅参数

运行 CTAS 查询

要以 CSV 以外的格式存储 CTAS 查询的输出,请在 WITH 语句中配置格式属性。例如,以下查询根据 SELECT 返回的数据,以 Parquet 格式创建一个名为 ctas-parquet-example 的新表:

`CREATE TABLE ctas_parquet_example   WITH (format = '`_`PARQUET`_`')     AS SELECT col1, col2, FROM example_table;`

有关 CTAS 参数的更多信息,请参阅 CTAS 表属性

如果您只需要保留输出数据文件而不保留新表,则在查询完成后删除 CTAS 表

相关信息

CTAS 查询的注意事项和限制

CTAS 查询的示例

AWS 官方
AWS 官方已更新 4 个月前