当map reduce有多个reducer时,如何获取每个reducer输出文件的单独输出记录数?
现在我可以使用REDUCE_OUTPUT_RECORDS计数器获得总减速器记录器数。但如何获得个别减速机?我试图在reducer中增加reducer输出记录数,但我无法获得输出部分文件名来写入自定义计数器。
我查找每个减速机的输出记录数...总排序顺序说我想要每个减速机发出的记录数...例如总记录是7 .. 2来自减速机1和5是从减速机2,统计数据..
答案 0 :(得分:0)
我希望您正在寻找每个reducer正在处理的记录数。为每个键调用每个reducer一次/列表的大小是您根据我的理解所需的大小。然后通过编程,您需要为每个读取的记录发出1作为映射的输出,然后将它们在结果中求和并发出它。
您还可以使用hadoop API中提供的LongSumReducer类。希望this有助于进一步理解
答案 1 :(得分:0)
回答下面我自己的问题的步骤是:
因此,使用此功能,我们可以识别不同的减少部分文件计数。
以下是代码:
MyReduce extends Reducer<..>{
private static int count = 0;
reduce(..){
<your code>
:
count++;
context.write(..);
}
@Override
cleanup(Context output){
output.getCounter("RecordCounter","Reducer-no-"+output.getConfiguration().getInt("mapreduce.task.partition",
0)).increment(count);
}