2015-01-12 40 views
4

到红移运行我的复制命令将所有文件从S3文件夹复制到失败红移表"ERROR: gzip: unexpected end of stream. Unknown zlib error code. zlib error code: -1"运行COPY命令加载的gzip-ED数据S3

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-ED。

在AWS文档中没有明确指出,如果您只指定了文件夹名称,则复制命令可以加载该文件夹的全部内容,但是我确实收到错误。

有没有人遇到过类似的问题?这种操作需要文件前缀吗?

+1

桶s3中是否有其他文件(不是gzip):// bucket_name/folder_name /? –

+0

不,该文件夹只包含gzip文件 –

+0

您可以尝试使用s3cmd ls s3:// bucket_name/folder_name?或者与aws s3 cli –

回答

5

您的一个gzip文件格式不正确。 GZip在文件末尾包含压缩“字典”,如果没有它,就不能扩展。

如果文件没有被完整写入,例如,磁盘空间不足,那么当您尝试将文件加载到Redshift时会看到您看到的错误。

从经验来说... ;-)

2

我遇到了同样的问题,在我的情况的gzip文件是使用具有确切的文件名复制命令时一样,它是工作的罚款是正确的。

该问题主要是因为应用程序“S3浏览器”。当你用它创建目录时,它会在其中创建一些额外的隐藏文件。当复制命令尝试读取目录中的文件时,它会读取隐藏的无效gzip文件并引发错误。