在hadoop中删除错误的输入文件

时间:2013-11-12 12:11:29

标签: hadoop hadoop-streaming elastic-map-reduce

我正在使用Amazon Elastic MapReduce来处理上传到S3的一些日志文件。

日常文件每天从使用S3的服务器上传,但似乎有些文件在传输过程中被破坏了。这导致java.io.IOException: IO error in map input file例外。

有没有办法让hadoop跳过坏文件?

2 个答案:

答案 0 :(得分:1)

您可以使用一堆记录跳过配置属性来执行此操作 - 请参阅http://hadoop.apache.org/docs/r1.2.1/mapred-default.html上的mapred.skip.前缀属性

关于这个主题和这些配置属性还有一个很好的博客文章:

也就是说,如果你的文件完全损坏(即在第一条记录之前被破坏),你甚至可能会遇到这些属性的问题。

答案 1 :(得分:0)

克里斯怀特的评论建议写自己的RecordReaderInputFormat是完全正确的。我最近遇到了这个问题,并且能够通过捕获这些类中的文件异常,记录它们,然后转到下一个文件来解决它。

我在这里写了一些细节(包括完整的Java源代码):http://daynebatten.com/2016/03/dealing-with-corrupt-or-blank-files-in-hadoop/