卸载红移:追加

Posted

技术标签:

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

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

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

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 路径,然后再次卸载。 我知道那种感觉 :( 我经历过同样的情况。当我发现时我非常失望......我最终使用了同样的方法

以上是关于卸载红移:追加的主要内容,如果未能解决你的问题,请参考以下文章

AWS 红移卸载附加时间戳

红移:数据迁移

以追加模式写入pyspark中的红移

JDK安装和卸载

jdk卸载之后,要修改路径吗?怎么修改?

在一行中追加查询结果