有没有办法“设置”Hadoop计数器而不是增加它?

时间:2011-09-21 16:10:03

标签: hadoop

API仅提供在Mapper或Reducer中增加计数器的方法。有没有办法设置它?或者只增加它的值一次,而不管映射器和减速器的运行次数。

4 个答案:

答案 0 :(得分:2)

你想要达到什么目的?这本来就很棘手,就像多个映射器尝试设置计数器一样?谁应该获胜?计数器通常只增加的原因是架构可以非常,非常快速和有效地完成。

答案 1 :(得分:1)

您无法设置计数器,因为计数器是从每个任务求和并汇总到顶级计数器。

我在MapReduce作业中使用ZooKeeper进行小型通信或任务之间的协调,或者标记作业或任务中发生的某些事情。

答案 2 :(得分:0)

至少正如@orangeoctupus所指出的那样,Hadoop API无法做到这一点。 我用来实现这个的方法是在Job的Context属性中设置值。最后,可以在作业运行后读取属性。非优雅,但一个解决方法!

答案 3 :(得分:0)

接口org.apache.hadoop.mapreduce.Counter defines a method setValue,但如果它看似基于描述全局工作,我同意其他答案,它没有很多用例这也是好主意......