答案 0 :(得分:2)
是在相同的映射器中,它是setup()
,map()
和cleanup()
中的同一个上下文对象。< / p>
正如您可能会看到这些方法是从run()
调用的,该方法如下所示:
public void run(Context context) throws IOException, InterruptedException {
setup(context);
while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
cleanup(context);
}
这应该回答你的第1点和第2点,对于第3点,你可以覆盖run方法以获得更多控制,因为它是Javadoc建议的:
专家用户可以覆盖此方法以获得更完整的控制权 执行Mapper。
也许您不需要为上下文保留成员字段,但确定可以。
此外,虽然对象是相同的,但它的属性值可以在任何方法中设置或取消设置,使其处于与传递给另一个方法(设置,映射或清理)时不同的状态。 / p>
答案 1 :(得分:1)
以下是Mapper.Context的文档。在给定特定工作的情况下,某些属性(如getJobID()
)保持不变,而某些属性(如getInputSplit()
)可能会在同一作业中的地图上有所不同。