来自空 S3 分区的 Redshift COPY

Posted

技术标签:

【中文标题】来自空 S3 分区的 Redshift COPY【英文标题】:Redshift COPY from the empty S3 partition 【发布时间】:2020-06-16 21:50:16 【问题描述】:

我正在为每个 S3 分区使用 Redshift COPY。

某些分区存在但没有文件(空):在 AWS 控制台中,空分区显示为

date_key=2020-05-28_$folder$

在这种情况下,COPY 命令会产生错误:

error:  The specified S3 prefix 'root/hive/tables/my_table/date_key=2020-06-13/' does not exist

一种解决方法是检查代码是否分区为空并且不调用 COPY。

但我希望 COPY 命令有一些标志(例如 MAXERROR),它将这种情况视为正常情况并且不会产生错误。

【问题讨论】:

【参考方案1】:

如果您使用的是没有文件的 s3 路径,则复制命令不会引发任何错误。您可能需要重新检查您在复制命令中提供的 s3 路径是否存在。

【讨论】:

【参考方案2】:

redshift中的copy参数默认没有这个参数,参考AWS下面的文档。

https://docs.aws.amazon.com/redshift/latest/dg/r_COPY-alphabetical-parm-list.html

尽管您可以使用 for each loop 或 redshift 中的循环并在 s3 的目录列表中循环,其中至少有一个文件。您可以将目录列表传递给循环以消除此错误。

【讨论】:

以上是关于来自空 S3 分区的 Redshift COPY的主要内容,如果未能解决你的问题,请参考以下文章

Redshift:可以在对 S3 进行分区卸载时为路径指定后缀吗?

pyWriteDynamicFrame:无法识别的方案空;预期 s3、s3n 或 s3a [胶水到 Redshift]

将空表从 redshift 卸载到 s3 的行为如何?

来自 S3 的 AWS Redshift COPY csv

Redshift Unload:仅在第一个分区中添加标头,不包括其余部分

以特定分区格式将数据卸载到 redshift