我正在使用Amazon Elastic MapReduce来处理上传到S3的一些日志文件。
日常文件每天从使用S3的服务器上传,但似乎有些文件在传输过程中被破坏了。这导致java.io.IOException: IO error in map input file
例外。
有没有办法让hadoop跳过坏文件?
答案 0 :(得分:1)
您可以使用一堆记录跳过配置属性来执行此操作 - 请参阅http://hadoop.apache.org/docs/r1.2.1/mapred-default.html上的mapred.skip.
前缀属性
关于这个主题和这些配置属性还有一个很好的博客文章:
也就是说,如果你的文件完全损坏(即在第一条记录之前被破坏),你甚至可能会遇到这些属性的问题。
答案 1 :(得分:0)
克里斯怀特的评论建议写自己的RecordReader
和InputFormat
是完全正确的。我最近遇到了这个问题,并且能够通过捕获这些类中的文件异常,记录它们,然后转到下一个文件来解决它。
我在这里写了一些细节(包括完整的Java源代码):http://daynebatten.com/2016/03/dealing-with-corrupt-or-blank-files-in-hadoop/