2017-07-24 102 views
0

我有一个Spark作业,在编写的COPY部分失败。我已经在S3中处理了所有的输出,但在计算如何手动加载时遇到了问题。如何手动将火花红移AVRO文件加载到Redshift中?

COPY table 
FROM 's3://bucket/a7da09eb-4220-4ebe-8794-e71bd53b11bd/part-' 
CREDENTIALS 'aws_access_key_id=XXX;aws_secret_access_key=XXX' 
format as AVRO 'auto' 

在我的文件夹中有一个_SUCCESS_committedxxx_startedxxx文件,然后将99个文件都开始使用前缀part-。当我运行此我得到一个stl_load_error - >Invalid AVRO file found. Unexpected end of AVRO file.如果我采取这一前缀了,然后我得到:

[XX000] ERROR: Invalid AVRO file Detail: ----------------------------------------------- error: Invalid AVRO file code: 8001 context: Cannot init avro reader from s3 file Incorrect Avro container file magic number query: 10882709 location: avropath_request.cpp:432 process: query23_27 [pid=10653] ----------------------------------------------- 

这是可能的吗?这将是很好的保存处理。

回答

1

我和Redshift有同样的错误。

删除_committedxxx和_startedxxx文件(_SUCCESS文件没有问题)后,COPY起作用。

如果您有S3许多目录,你可以使用AWS CLI清除它们的这些文件:

aws s3 rm s3://my_bucket/my/dir/ --include "_comm*" --exclude "*.avro" --exclude "*_SUCCESS" --recursive 

注意,CLI似乎有一个bug,--include“_comm *”做了不适合我。所以它试图删除所有文件。使用“--exclude * .avro”可以做到这一点。要小心,先用--dryrun运行命令!

相关问题