2017-07-24 75 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運行命令!

相關問題