来自空 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]