2012-09-28 25 views
2

我想从mappper外部的hadoop计数器添加一些东西。 所以,我想访问上下文对象的getCounter这样的:如何从mapper或reducer外部增加hadoop计数器?

context.getCounter(counter, key).increment(amount) 

我不能得到从我开始工作的上下文对象。我只能做

job.getCounters().findCounter() 

它不让我给hadoop计数器添加一些东西。

回答

1

您只能在映射器/缩减器任务中使用/写入计数器。作业跟踪器内置了与计数器进行交互的功能,而且您并不想干涉已经是复杂设置的功能。

几个月前,我正好遇到了这个问题,试图使用计数器来存储临时信息,但我决定将我需要的信息写入定义的hdfs目录,并在我的工作完成后读取。

编辑:为什么和whatdo要使用柜台外的映射器的

编辑#2:如果你想从一个已完成作业统计,然后计数器是不是该在正确的地方,作为一个),他们似乎并不bewritable一次作业服务器完成数据采集和b)它们旨在用于跨任务汇总度量标准。最近我有类似的需求,并且在作业设置类(在我的边缘节点上)做了我的统计数据,然后将数据写入日志。

+0

我想在作业完成时计算一些统计数据,并将其放在计数器中,以便从hadoop仪表板中查看。 – figaro

+0

@figaro - 查看我的第二次编辑。 – davek

相关问题