API仅提供在Mapper或Reducer中增加计数器的方法。有没有办法设置它?或者只增加它的值一次,而不管映射器和减速器的运行次数。
答案 0 :(得分:2)
你想要达到什么目的?这本来就很棘手,就像多个映射器尝试设置计数器一样?谁应该获胜?计数器通常只增加的原因是架构可以非常,非常快速和有效地完成。
答案 1 :(得分:1)
您无法设置计数器,因为计数器是从每个任务求和并汇总到顶级计数器。
我在MapReduce作业中使用ZooKeeper进行小型通信或任务之间的协调,或者标记作业或任务中发生的某些事情。
答案 2 :(得分:0)
至少正如@orangeoctupus所指出的那样,Hadoop API无法做到这一点。 我用来实现这个的方法是在Job的Context属性中设置值。最后,可以在作业运行后读取属性。非优雅,但一个解决方法!
答案 3 :(得分:0)
接口org.apache.hadoop.mapreduce.Counter defines a method setValue,但如果它看似基于描述全局工作,我同意其他答案,它没有很多用例这也是好主意......