【发布时间】:2015-10-08 10:28:30
【问题描述】:
是否有机会在映射器级别对用户定义的 java 计数器设置条件来控制映射器输出??
Long l = context.getCounter(Counters.COUNT).getValue();
if(5L >= l) {
context.getCounter(Counters.COUNT).increment(1);
context.write((LongWritable)key, value);
} else {
System.out.println("MAP ELSE");
return;
}
将超过 5 条记录输入到 reducer。 有没有机会控制这个????
【问题讨论】:
-
只有在所有映射器完成后才能知道计数器的值。您如何获得地图端的计数器值?您的具体要求是什么?
-
我正在使用名为 Counters.COUNT 的用户定义计数器。在这个计数器的帮助下,我想控制我的地图输出。关于控制 mapoutput [总 mapoutput 记录的数量最多为 5]。甚至将我的 context.write 函数调用放在“if 条件”中,但我从 mapper 获得了 5 条以上的记录作为减速器的输入。所以我的意图是,如果该计数器值达到 MAX 值(5),我想调整地图阶段。
标签: java hadoop mapreduce counter