我有一些柜台我在映射类创建:如何访问输出阶段的Mapper/Reducer计数器?
(例如,使用AppEngine上-MapReduce的Java库v.0.5书面)
@Override
public void map(Entity entity) {
getContext().incrementCounter("analyzed");
if (isSpecial(entity)){
getContext().incrementCounter("special");
}
}
(方法isSpecial
刚刚返回取决于true
或false
实体的状态,与问题无关)
我想在完成处理整个东西时,在Output类的finish
方法中访问这些计数器:
@Override
public Summary finish(Collection<? extends OutputWriter<Entity>> writers) {
//get the counters and save/return the summary
int analyzed = 0; //getCounter("analyzed");
int special = 0; //getCounter("special");
Summary summary = new Summary(analyzed, special);
save(summary);
return summary;
}
...但该方法getCounter
只能从MapperContext类,它只能访问从映射器/减速器getContext()
方法。
如何在输出阶段访问我的计数器?
备注:我无法将计数器值发送到我输出的类,因为整个Map/Reduce是将一组实体转换为另一个实体(换句话说:计数器不是地图的主要用途/减少)。计数器只是为了控制 - 这是有道理的,我在这里计算它们,而不是创建另一个进程来计算。
谢谢。
你去了哪里,创建了问题:https://code.google.com/p/appengine-mapreduce/issues/detail?id=208 –