【问题标题】:UNLOAD Redshift: append卸载红移:追加
【发布时间】:2020-05-04 14:22:02
【问题描述】:

我想将 Redshift 表中的UNLOAD 数据写入现有的 S3 文件夹,这与使用写入选项“append”在 Spark 中发生的情况类似(因此创建新的目标文件夹中的文件(如果已存在)。

我知道 ALLOWOVERWRITE 选项,但这会删除已经存在的文件夹。

Redshift 是否支持它?如果不是,推荐什么方法? (无论如何,我相信这将是一个理想的功能......)

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-redshift


    【解决方案1】:

    可以解决此问题的一种解决方案是在文件夹后附加另一个唯一后缀 例如

    unload ('select * from my_table') 
    to 's3://mybucket/first_folder/unique_prefix_' iam_role 
    'arn:aws:iam::0123456789012:role/MyRedshiftRole'; 
    

    如果您在第一个folder 级别之后添加unique_prefix_,则所有新文件在卸载操作期间都将以您的unique_prefix_ 开头,因此您不需要任何ALLOWOVERWRITE。 这种方法的唯一问题是,如果您卸载的数据发生更改,您可能会为卸载的数据使用混合架构。

    【讨论】:

    • 我知道这是一种解决方法,ALLOWOVERWRITE 我们最终在某些情况下,以前的卸载文件更多,而相同路径的新卸载文件更少,因此我们在 s3卸载上次运行的文件 + 上次运行的一些文件,我们只是决定prune 路径,然后再次卸载。
    • 我知道那种感觉 :( 我经历过同样的情况。当我发现时我非常失望......我最终使用了同样的方法
    猜你喜欢
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2019-06-10
    • 2012-08-30
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多