我们正在使用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中删除文件,并确保不要留下这些麻烦的文件?
答案 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。