2011-04-21 39 views
1

我們使用亞馬遜的Elastic Map Reduce來執行一些大型文件處理作業。作爲我們工作流程的一部分,我們偶爾需要從S3中刪除可能已經存在的文件。我們可能會使用Hadoop的FS接口,就像這樣:

hadoop fs -rmr s3://mybucket/a/b/myfile.log 

這適當去除S3的文件,但在它的位置留下一個名爲的空文件「S3:// mybucket/A/B_ $文件夾$」 。如this question中所述,Hadoop的Pig無法處理這些文件,因此後面的工作流步驟可能會阻塞該文件。

(注意,它似乎並沒有不管我們使用-rmr-rm或者我們是否使用s3://s3n://的方案:所有這些展品的描述的行爲)

如何使用hadoop fs接口從S3中刪除文件,並確保不會將這些麻煩的文件留在後面?

回答

0

我無法弄清楚是否有可能以這種方式使用hadoop fs接口。然而,s3cmd接口做正確的事(但一次只能爲一個鍵):

s3cmd del s3://mybucket/a/b/myfile.log 

這首先需要配置〜/ .s3cfg文件與您的AWS憑據。 s3cmd --configure將以交互方式幫助您創建此文件。