我有一个hadoop工作,自己定义了几个计数器。当我运行这个作业(number of map>500)时,我发现一些map任务丢失了用户定义的计数器,但是hadoop内置的计数器(比如map input records)工作正常。这个问题在某个数据节点上随机发生。这令人困惑。那么问题是什么呢?
zwghvu4y1#
用try catch块 Package map()方法逻辑,并在catch块中增加另一个以异常消息命名的计数器:
@Override public void map(ByteBuffer key,SortedMap<ByteBuffer, IColumn> value, Context context) throws IOException, InterruptedException { try { // Map logic goes here. context.getCounter("Custom","Counter").increment(1); } catch (Exception e) { context.getCounter("Exception",e.getMessage()).increment(1); } // End map logic }
行处理可能抛出异常,从而绕过增量逻辑。
1条答案
按热度按时间zwghvu4y1#
用try catch块 Package map()方法逻辑,并在catch块中增加另一个以异常消息命名的计数器:
行处理可能抛出异常,从而绕过增量逻辑。