map / reduce中的静态对象

时间:2011-03-22 02:14:30

标签: hadoop mapreduce

我试图在hadoop中使用静态对象。 此对象都用于map和reduce。 我的节目是:

  1. 读取100000行,即100000张地图。
  2. 对于每个映射器,此对象的静态属性加1。
  3. 对于每个reducer,此静态属性被写为reducer的值,因此V2 in
  4. 测试结果是,在reducer启动之前,mapper中的静态对象已被清除。 此外,减速器中的静止物体在不同的任务中看起来并不相同,因此不同的减速器结果不能累积。

    我的问题是,如何使用静态对象并使其在不同的任务工具之间保持一致。

1 个答案:

答案 0 :(得分:3)

默认情况下,每个映射器和reducer都在自己的JVM中运行,因此显然整个集群中的静态不会是全局的。如果要累积全局计数,请使用Hadoop计数器:

reporter.incrCounter("My custom counters", "my counter", 1);