我想从mappper外部向hadoop计数器添加一些东西。 所以,我想在上下文对象上访问getCounter,如下所示:
context.getCounter(counter, key).increment(amount)
我无法从我开始工作的地方获取上下文对象。我只能这样做
job.getCounters().findCounter()
这不允许我向hadoop计数器添加内容。
答案 0 :(得分:1)
您只能在mapper / reducer任务中使用/写入计数器。作业跟踪器内置了与计数器交互的功能,您实际上并不想干扰已经是复杂的设置。
几个月前我确实遇到过这个问题,尝试使用计数器来存储临时信息,但我决定将我需要的信息写入已定义的hdfs目录,并在我的工作完成后阅读。
编辑:为什么以及如何使用地图工具 的计数器?
编辑#2 :如果您想要完成作业的统计数据,那么计数器就不是正确的位置,因为a)一旦作业跟踪器完成收集,它们似乎不可写入数据和b)它们旨在用于跨任务聚合度量。我最近有类似的需求,并在作业设置类(在我的边缘节点上)完成我的统计数据总和,然后将数据写入日志。