- 是否相同上下文传递给设置,映射,运行,清理内 映射器?
- 会不会有它不一样的情况?
- 你可以使上下文成为设置中的成员字段吗?
Mapper上下文传递给Mapper函数(setup,map,run,cleanup)总是一样吗?
Mapper上下文传递给Mapper函数(setup,map,run,cleanup)总是一样吗?
是所述相同映射器内它处于setup()
,map()
和cleanup()
所述一个和相同上下文对象。
正如你可以看到这些方法是从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的执行。
也许你不需要保留一个成员字段的上下文,但确定你可以。而且,虽然对象是相同的,但它的属性值可以在任何方法中设置或取消设置,使其处于与传递给其他方法(设置,映射或清理)时不同的状态。
这里是Mapper.Context的文档。考虑到特定的工作,像getJobID()
这样的一些属性保持不变,而像getInputSplit()
这样的一些属性在同一作业中的地图上可能会有所不同。