【发布时间】:2022-06-23 19:56:58
【问题描述】:
【问题讨论】:
标签: amazon-athena
【问题讨论】:
标签: amazon-athena
在Athena 中运行SELECT 查询会在Amazon S3 中以未压缩的CSV 格式生成单个结果文件,这是默认行为。
如果您的查询预计会输出大量结果集,则需要花费大量时间将结果作为单个文件写入 Amazon S3。使用UNLOAD,您可以在 Amazon S3 中将结果拆分为多个文件,从而减少写入阶段所花费的时间,从而获得更好的性能,您甚至可以使用parquet 等压缩技术。
您尝试做的不是卸载的目的。一种解决方案是编写某种后处理器,在写入完成后合并文件。也许使用在 S3 写入时触发的 lambda 函数。
【讨论】:
假设您的 UNLOAD 查询使用TEXTFILE 格式和gzip 压缩,例如:
UNLOAD( select * from my_table )
TO 's3://your_bucket/your_path/'
WITH (
format = 'TEXTFILE',
compression = 'gzip',
field_delimiter = '\t'
)
一个简单的解决方案如下:
aws s3 cp --recursive s3://your_bucket/your_path/ .
gzip -d *
cat * > your_file.csv
【讨论】: