我正在尝试编写地图缩小工作,并希望在我的减速机上添加一个计数器。但是,当我运行作业时,计数器似乎没有出现在输出中。
目前我正在使用该行(Java):
context.getCounter(ReducerCounters.COUNTDISTINCT).increment(1);
说实话,我并非100%确定可以在减速机上使用这样的计数器。如果有人知道这是可能的还是不可能的,请告诉我。我似乎无法在网上找到任何可靠的减速器计数器示例。
非常感谢。
答案 0 :(得分:1)
以下是我的导入:
import org.apache.hadoop.mapreduce.Counter;
import org.apache.hadoop.mapreduce.Counters;
这在我的驱动程序类中作为枚举出现。
public enum ReducerCounters {
COUNTDISTINCT
};
这存在于我的驱动程序的运行功能中。
job.waitForCompletion(true);
Counters cn=job.getCounters();
// Find the specific counters that you want to print
Counter c1=cn.findCounter(ReducerCounters.COUNTDISTINCT);
System.out.println("Displaying just the value " + c1.getValue());
还要确保在pom文件中使用最新的hadoop客户端版本。不要使用上次发布的hadoop-core版本,因为它没有更新。我刚试过它。计数器在我的mapper和reducer中都可以工作。