我有一个 Hadoop Map-Reduce 程序,它只是一个简单的文件处理代码。每个映射器都有一个文件作为输入。
我的 Reducer 部分是空的。所有的工作都在 map() 方法中完成。
现在我面临的问题是-
如果映射器中的文件处理操作失败,我无法告诉我的 Hadoop 作业等待几秒钟,然后从同一个失败的文件重试并继续前进。
有什么方法/配置可以这样指定吗?
如果有人遇到过这样的用例,请告诉我。
最佳答案
我认为您应该尝试根据您的逻辑使用多个输出将错误记录写入不同的文件。对于多个输出,您可以点击此链接:Multiple output link
如果您采用这种方法,您可以根据 map 方法中的逻辑过滤掉不良记录和良好记录,并且您的工作不会失败。使用多个输出,您可以将错误记录写入单独的文件并在以后对这些文件进行分析。使用这种方法,您可以确保您的工作不会因为不良记录而失败,并且您的良好记录得到正确处理。
您也可以查看此链接 Counters to detect badrecord弄清楚你实际有多少不良记录。希望对您有所帮助
关于java - Hadoop 中失败文件的重试处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24678296/