【问题标题】:Is it possible to unload data in AWS Athena to a single file?是否可以将 AWS Athena 中的数据卸载到单个文件中?
【发布时间】:2022-06-23 19:56:58
【问题描述】:

doc 声明

UNLOAD 结果被并行写入多个文件。

我想这对于读写来说都更有效,所以卸载到单个文件没有意义。但是,如果出于某种原因最终用户希望将输出作为单个文件,这可能吗?

【问题讨论】:

    标签: amazon-athena


    【解决方案1】:

    Athena 中运行SELECT 查询会在Amazon S3 中以未压缩的CSV 格式生成单个结果文件,这是默认行为。

    如果您的查询预计会输出大量结果集,则需要花费大量时间将结果作为单个文件写入 Amazon S3。使用UNLOAD,您可以在 Amazon S3 中将结果拆分为多个文件,从而减少写入阶段所花费的时间,从而获得更好的性能,您甚至可以使用parquet 等压缩技术。

    您尝试做的不是卸载的目的。一种解决方案是编写某种后处理器,在写入完成后合并文件。也许使用在 S3 写入时触发的 lambda 函数。

    【讨论】:

    • 丑陋的运营商
    【解决方案2】:

    假设您的 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
    

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2020-10-20
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      • 1970-01-01
      • 2020-04-28
      • 2023-02-04
      • 1970-01-01
      相关资源
      最近更新 更多