gpt4 book ai didi

hadoop - 在您的实现中是否有人覆盖了 Mapper run(Context) 方法?

转载 作者:可可西里 更新时间:2023-11-01 15:10:12 27 4
gpt4 key购买 nike

https://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/Mapper.html#method.summary

run (Context) org.apache.hadoop.mapreduce.Mapper

方法
a). Expert users can override this method for more complete control over the execution of the Mapper.
  1. 目前 run(Context) 方法的默认行为是什么。

  2. 如果我重写 run(Context),根据文档会得到什么样的特殊控制

  3. 是否有人在您的实现中覆盖了此方法?

最佳答案

  1. Currently what is the default behavior of run(Context) method.

默认实现在 Mapper 的 Apache Hadoop 源代码中可见。类:

/**
* Expert users can override this method for more complete control over the
* execution of the Mapper.
* @param context
* @throws IOException
*/
public void run(Context context) throws IOException, InterruptedException {
setup(context);
try {
while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
} finally {
cleanup(context);
}
}

总结:

  1. 调用setup进行一次性初始化。
  2. 遍历输入中的所有键值对。
  3. 将键和值传递给 map 方法实现。
  4. 调用cleanup 进行一次性拆卸。
  1. If i override run(Context) what kind of special control will get as per the documentation?

默认实现始终遵循单个线程中的特定执行顺序。覆盖它的情况很少见,但它可能会为高度特化的实现打开可能性,例如不同的线程模型或尝试合并冗余键范围。

  1. Is anyone overridden this method in your implementations?

在 Apache Hadoop 代码库中,有两个重写:

  • ChainMapper允许将多个 Mapper 类实现链接在一起,以便在单个映射任务中执行。 run 的覆盖设置了一个表示链的对象,并通过该映射器链传递每个输入键/值对。
  • MultithreadedMapper允许多线程执行另一个 Mapper 类。 Mapper 类必须是线程安全的。 run 的覆盖启动多个线程迭代输入键值对并将它们传递给底层 Mapper

关于hadoop - 在您的实现中是否有人覆盖了 Mapper run(Context) 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44637869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com