Mapper类有四个方法:
(1)protected void setup(Context context)
(2)protected void map(KEYIN key,VALUEIN value,Context context)
(3)protected void cleanup(Context context)
(4)public void run(Context context)
setup()方法一般是在实例化时用户程序需要做的一些初始化工作(如打开一个全局文件,建立数据库链接等等)
cleanup()方法是收尾工作,如关闭文件或者执行map()后的键值对分发等。
map()方法承担主要的处理工作,一般我们些代码的时候主要用到的是map方法。
默认Mapper的run()方法的核心代码如下:
public void run(Context context) throws IOException,InterruptedException
{
setup(context);
while(context.nextKeyValue())
map(context.getCurrentKey(),context,context.getCurrentValue(),context);
cleanup(context);
}
setup和cleanup仅仅在初始化Mapper实例和Mapper任务结束时由系统作为回调函数分别各做一次,并不是每次调用map方法时都去执行。所以如果是要处理map中的某些数值数据时,想把代码写在cleanup里面需要特别注意。
Mapper输出结果到reduce阶段之前,还有几个可以自定义的步骤
(1)combiner 每个节点输出的键值可以先进行合并处理。
(2)合并处理之后如果还想将不同key值分配给不同reduce进行处理,称为shuffle洗牌过程,提供了一个partioner类来完成。
(3)如果想将key值自定义进行排序,这边提供了一个sort类,可以自定义进行排序
本文详细介绍了MapReduce中Mapper类的四个核心方法:setup、map、cleanup及run,并解释了它们的功能与执行时机。此外,还介绍了Mapper输出结果到Reduce阶段前的自定义步骤,包括Combiner的使用、Partitioner的作用以及自定义排序。
6708

被折叠的 条评论
为什么被折叠?



