UNLOAD - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

UNLOAD

将查询结果写入SELECT语句设置为指定的数据格式。支持的格式UNLOAD包括 Apache 镶木地板、ORC、Apache Avro 和 JSON。CSV 是 Athena 使用的唯一输出格式SELECT查询,但您可以使用UNLOAD来写入SELECT查询设置为UNLOAD支持。

尽管您可以使用 CTAS 语句以 CSV 以外的格式输出数据,但这些语句还需要在 Athena 中创建表。这些区域有:UNLOAD语句在您想输出SELECT查询,但不需要关联的表。例如,下游应用程序可能需要SELECT查询设置为 JSON 格式,如果您打算使用SELECT查询以进行其他分析。

注意事项和限制

当您使用UNLOAD语句 Athena 请记住以下几点:

  • 引擎版本— Athena 引擎版本 2 是必需的。

  • 没有文件的全局排序UNLOAD结果将并行写入多个文件。如果SELECT中的UNLOAD语句指定排序顺序,每个文件的内容按排序顺序排序,但文件不相对于彼此排序。

  • 孤立数据未删除— 在出现故障的情况下,Athena 不会尝试删除孤立的数据。此行为与 CTAS 和 CTAS 相同,INSERT INTO语句。

  • 最大分区— 可以与之配合使用的最大分区数UNLOAD为 100。

  • 元数据和清单文件— Athena 为每个UNLOAD查询。清单跟踪查询写入的文件。这两个文件都会保存到 Amazon S3 中的 Athena 查询结果位置。有关更多信息,请参阅识别查询输出文件

  • 加密UNLOAD输出文件将根据用于 Amazon S3 的加密配置进行加密。设置加密配置以加密UNLOAD结果,则可以使用EncryptionConfiguration API.

  • 已准备好语句UNLOAD可以与准备好的语句一起使用。有关 Athena 中预准备语句的信息,请参阅使用预准备语句进行查询.

  • 服务配额— 卸载使用 DML 查询配额。有关配额信息,请参阅Service Quotas.

Syntax

这些区域有:UNLOAD语句使用以下语法。

UNLOAD (SELECT col_name[, ...] FROM old_table) TO 's3://my_athena_data_location/my_folder/' WITH ( property_name = 'expression' [, ...] )
注意

这些区域有:TO目标必须在 Amazon S3 中指定一个没有数据的位置。在UNLOAD查询写入指定的位置,它会验证存储桶位置是否为空。由于UNLOAD如果位置中已有数据,则不会将数据写入指定位置,UNLOAD不会覆盖现有数据。要重新使用存储桶位置作为UNLOAD,删除存储桶位置中的数据,然后再次运行查询。

Parameters

可能的值属性名称如下所示。

格式 = 'file_format'

必填项。指定输出的文件格式。可能的值file_formatORCPARQUETAVROJSON,或者TEXTFILE.

压缩 = '压缩格式'

可选。此选项特定于 ORC 和镶木地板格式。对于 ORC,可能的值包括:lz4snappyzlib,或者zstd. 对于镶木地板,可能的值包括gzip或者snappy. 对于 ORC,默认值为zlib,对于镶木地板,默认为gzip.

注意

此选项不适用于AVRO格式的日期和时间。Athena 使用gzip(对于 )JSONTEXTFILE格式。

字段分隔符 = '分隔符'

可选。为 CSV、TSV 和其他文本格式文件指定单字符字段分隔符。以下示例指定逗号分隔符。

WITH (field_delimiter = ',')

目前,不支持多字符字段分隔符。如果您未指定字段分隔符,则会使用八进制字符\001(^A) 被使用。

分区由 = 数组 [科尔名称[,...]]

可选。输出进行分区所依据的列的数组列表。

注意

在您的SELECT语句,请确保分区列的名称在列列表中是最后一个。

Examples

下面的示例将SELECT查询到 Amazon S3 位置s3://DOC-EXAMPLE-BUCKET/unload_test_1/使用 JSON 格式。

UNLOAD (SELECT * FROM old_table) TO 's3://DOC-EXAMPLE-BUCKET/unload_test_1/' WITH (format = 'JSON')

下面的示例将SELECT查询,使用快速压缩进行镶木地板格式。

UNLOAD (SELECT * FROM old_table) TO 's3://DOC-EXAMPLE-BUCKET/' WITH (format = 'PARQUET',compression = 'SNAPPY')

以下示例以文本格式写入四列,输出按最后一列进行分区。

UNLOAD (SELECT name1, address1, comment1, key1 FROM table1) TO 's3://DOC-EXAMPLE-BUCKET/ partitioned/' WITH (format = 'TEXTFILE', partitioned_by = ARRAY['key1'])