如何防止`hadoop fs rmr <uri>`创建$ folder $ files?</uri>

时间:2011-04-21 20:09:06

标签: hadoop

我们正在使用Amazon的Elastic Map Reduce来执行一些大型文件处理作业。作为我们工作流程的一部分,我们偶尔需要从S3中删除可能已存在的文件。我们使用hadoop fs接口,如下所示:

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

这会从S3中正确删除文件,但在它的位置会留下一个名为“s3:// mybucket / a / b_ $ folder $”的空文件。如this question中所述,Hadoop的Pig无法处理这些文件,因此工作流程中的后续步骤可能会阻塞此文件。

(注意,我们使用-rmr-rm或者我们是否使用s3://s3n://作为方案似乎并不重要:所有这些展览描述的行为。)

如何使用hadoop fs界面从S3中删除文件,并确保不要留下这些麻烦的文件?

2 个答案:

答案 0 :(得分:0)

我无法弄清楚是否有可能以这种方式使用hadoop fs界面。但是,s3cmd接口做的是正确的(但一次只能用于一个键):

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

这需要首先使用您的AWS凭证配置〜/ .s3cfg文件。 s3cmd --configure将以交互方式帮助您创建此文件。

答案 1 :(得分:0)

这是在Hadoop中实现S3支持的方式,请参阅:http://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/s3native/NativeS3FileSystem.html

所以使用s3cmd。