【发布时间】:2015-01-12 11:50:01
【问题描述】:
当我运行复制命令将所有文件从 S3 文件夹复制到 Redshift 表时,它会失败并显示 "ERROR: gzip: unexpected end of stream. Unknown zlib error code. zlib error code: -1":
copy table_name
(column_list)
from 's3://bucket_name/folder_name/'
credentials 'aws_access_key_id=xxxxxx;aws_secret_access_key=xxxxxxxxx'
delimiter '|' GZIP
但是,当我为文件夹中的每个文件指定文件前缀时,它会成功:
copy table_name
(column_list)
from 's3://bucket_name/folder_name/file_prefix'
credentials 'aws_access_key_id=xxxxxx;aws_secret_access_key=xxxxxxxxx'
delimiter '|' GZIP
文件是 GZIP 格式的。
AWS 文档中没有明确指定,如果您只指定文件夹名称,则复制命令可以加载该文件夹的全部内容,但是我确实收到了错误。
有没有人遇到过类似的问题?这种操作需要文件前缀吗?
【问题讨论】:
-
存储桶 s3://bucket_name/folder_name/ 中是否还有其他文件(不是 gzip)?
-
不,该文件夹仅包含 gzip 文件
-
你可以试试 s3cmd ls s3://bucket_name/folder_name 吗?或使用 aws s3 cli
-
致未来的读者:OP 在使用前缀时没有出错的原因是跳过了错误文件。这是使用前缀的“功能”,无论它是否匹配多个文件的单个文件。我不喜欢它,因为它默默地隐藏了失败。使用清单加载批量文件更加“稳健”。
标签: amazon-web-services amazon-s3 amazon-redshift