我试图在hadoop中使用静态对象。 此对象都用于map和reduce。 我的节目是:
测试结果是,在reducer启动之前,mapper中的静态对象已被清除。 此外,减速器中的静止物体在不同的任务中看起来并不相同,因此不同的减速器结果不能累积。
我的问题是,如何使用静态对象并使其在不同的任务工具之间保持一致。
答案 0 :(得分:3)
默认情况下,每个映射器和reducer都在自己的JVM中运行,因此显然整个集群中的静态不会是全局的。如果要累积全局计数,请使用Hadoop计数器:
reporter.incrCounter("My custom counters", "my counter", 1);