卸载红移:追加
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
路径,然后再次卸载。
我知道那种感觉 :( 我经历过同样的情况。当我发现时我非常失望......我最终使用了同样的方法以上是关于卸载红移:追加的主要内容,如果未能解决你的问题,请参考以下文章