为什么mapreduce中只使用map和reduce函数

qnyhuwrf  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(392)

为什么我们只有两个功能,有什么特别的原因吗 map() 以及 reduce() 在这个分布式处理的mapreduce概念中??为什么hadoop框架没有被设计成通用的,允许用户在初始Map函数之后根据需要进行任意多的函数调用?

2o7dmzc5

2o7dmzc51#

虽然charles的回答解释了mapreduce概念背后的原因,但是在初始Map函数之后,只要重写 run()Mapper 类(新api)

@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);
  }

你也可以在减速机里做类似的事情。

tyky79it

tyky79it2#

如果您只想对给定的Map输出应用不同的reduce操作,我只想使用 MultipleOutputs 要写入不同的文件/目录,这将“模拟”在同一Map输出上有多种类型的缩减器。你可以申请 MultipleOutputsReducer ,更多信息可在此处找到。
拥有一个map和reduce函数的目标是,这样就可以很容易地在广泛的机器上并行化。map/reduce作业是一个并行化的进程,尝试对同一数据应用多个操作是没有意义的,如果您需要,您可以用我上面写的扩展reducer,或者编写另一个作业。

相关问题