Hadoop 链式MapReduce作业中的计数器

Hadoop 链式MapReduce作业中的计数器,hadoop,mapreduce,iteration,chaining,Hadoop,Mapreduce,Iteration,Chaining,我正在使用链式作业。说: Job 1 -> Job 2 -> Job 3 -> Job 4 -> Job 5 我创建了几个计数器,比如 public static enum MoreEnum { counterA, counterB; } 我正在Job 2中使用counterA,并在Mapper和Driver中获得正确的输出。 甚至在作业5开始之前我就能够正确获取计数器A的值。 我在驱动程序中使用此选项: 价值观= job2.g

我正在使用链式作业。说:

Job 1 -> Job 2 -> Job 3 -> Job 4 -> Job 5
我创建了几个计数器,比如

public static enum MoreEnum {
        counterA,
        counterB;
    }
我正在
Job 2中使用
counterA
,并在Mapper和Driver中获得正确的输出。 甚至在
作业5开始之前
我就能够正确获取
计数器A的值
。 我在驱动程序中使用此选项:

价值观= job2.getCounters().findCounter(MoreEnum.counterA.getValue()

然而,在
作业5的映射程序中,当我这样做时:
Long value=context.getCounter(morenum.counterA).getValue()


我得到的值是
0
。为什么会这样,以及如何解决这个问题。

好吧,在作业5的上下文中不存在计数器。在您的驱动程序中,您应该可以从作业2获取计数,并将其设置为作业5中的配置变量。这就是我作为临时解决方法所做的。那么,在映射器/还原器中使用计数器时,计数器会添加到作业中吗?