0

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

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

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

4

2 回答 2

1

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

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

也就是说,如果您的文件完全损坏(即在第一个记录之前损坏),即使使用这些属性,您可能仍然存在问题。

于 2013-11-13T12:05:20.870 回答
0

Chris White 的评论建议自己编写RecordReader,并且InputFormat完全正确。我最近遇到了这个问题,并且能够通过捕获这些类中的文件异常、记录它们,然后继续处理下一个文件来解决它。

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

于 2016-03-22T13:08:53.273 回答