@override
public void run(Context context) throws IOException, InterruptedException {
setup(context);
while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
// Call all your methods you want here
cleanup(context);
}
2条答案
按热度按时间2o7dmzc51#
虽然charles的回答解释了mapreduce概念背后的原因,但是在初始Map函数之后,只要重写
run()
的Mapper
类(新api)你也可以在减速机里做类似的事情。
tyky79it2#
如果您只想对给定的Map输出应用不同的reduce操作,我只想使用
MultipleOutputs
要写入不同的文件/目录,这将“模拟”在同一Map输出上有多种类型的缩减器。你可以申请MultipleOutputs
在Reducer
,更多信息可在此处找到。拥有一个map和reduce函数的目标是,这样就可以很容易地在广泛的机器上并行化。map/reduce作业是一个并行化的进程,尝试对同一数据应用多个操作是没有意义的,如果您需要,您可以用我上面写的扩展reducer,或者编写另一个作业。