如何以除 CSV 以外的其他格式(例如压缩格式)存储 Athena 查询输出?

上次更新时间:2020 年 5 月 22 日

我想以除 CSV 以外的其他格式(例如 JSON 或压缩格式)存储 Amazon Athena 查询结果。该如何操作?

解决方法

Athena 仅支持 CSV 输出文件。如果要以其他格式存储查询输出文件,请使用 CREATE TABLE AS SELECT (CTAS) 查询并配置 format 属性。在查询完成后,请删除 CTAS 表。请记住以下几点:

  • 您可以将 format 设置为 ORC、PARQUET、AVRO、JSON 或 TEXTFILE。如果您未指定 CTAS 查询的格式,Athena 将使用 Parquet。
  • 参数名称 format 必须用小写字母列出,否则 CTAS 查询将失败。有关示例,请参阅示例:以不同的格式编写查询结果
  • 默认情况下,所有 CTAS 查询都会使用 GZIP 压缩。对于 Parquet 和 ORC,您可以使用 parquet_compressionorc_compression 选项指定其他压缩类型,例如 SNAPPY。有关示例,请参阅示例:指定数据存储和压缩格式
  • 对于基于文本的格式,您可以指定 field_delimiter,如下所示:WITH (field_delimiter = ',')。如果您未指定字段分隔符,则 Athena 将默认使用 \001。
  • 如果在 CTAS 查询中使用 external_location 参数,请确保 Amazon Simple Storage Service (Amazon S3) 位置不含任何数据。否则,您可能会看到如下所示的错误:“HIVE_PATH_ALREADY_EXISTS:表 'table_name' 的目标目录已存在:s3://AWSDOC-EXAMPLE-BUCKET”。有关 external_location 参数的更多信息,请参阅 CTAS 表属性

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?