Java 传递到映射器函数(设置、映射、运行、清理)的上下文是否始终相同? 是否将相同的上下文传递到 制图员 会不会有不一样的情况 能否将上下文设置为设置中的成员字段
以下是有关的文档。给定一个特定的作业,某些属性(如Java 传递到映射器函数(设置、映射、运行、清理)的上下文是否始终相同? 是否将相同的上下文传递到 制图员 会不会有不一样的情况 能否将上下文设置为设置中的成员字段,java,hadoop,Java,Hadoop,以下是有关的文档。给定一个特定的作业,某些属性(如getJobID())保持不变,而某些属性(如getInputSplit())可能在同一作业中的不同映射中有所不同。以下是相关文档。给定一个特定的作业,某些属性(如getJobID())保持不变,而某些属性(如getInputSplit())可能在同一作业中的不同映射中有所不同。是在同一映射器中,它是setup()、map()和cleanup()中的同一个上下文对象 如您所见,这些方法是从run()调用的,该方法如下所示: public void
getJobID()
)保持不变,而某些属性(如getInputSplit()
)可能在同一作业中的不同映射中有所不同。以下是相关文档。给定一个特定的作业,某些属性(如getJobID()
)保持不变,而某些属性(如getInputSplit()
)可能在同一作业中的不同映射中有所不同。是在同一映射器中,它是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所建议的:
专家用户可以覆盖此方法以更全面地控制
映射程序的执行
也许您不需要为上下文保留成员字段,但确实可以
此外,当对象相同时,可以在任何方法中设置或取消设置其属性值,使其处于与传递给另一个方法(设置、映射或清理)时不同的状态。是在同一映射器中,它是设置()
、映射()
和清理()
中的同一个上下文对象
如您所见,这些方法是从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所建议的:
专家用户可以覆盖此方法以更全面地控制
映射程序的执行
也许您不需要为上下文保留成员字段,但确实可以
此外,虽然对象是相同的,但它的属性值可以在任何方法中设置或取消设置,使其处于与传递给另一个方法(设置、映射或清理)时不同的状态