hadoop之mapper类,hadoopmapper
hadoop之mapper类,hadoopmapper
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类,可以自定义进行排序
刚才调试了一下,貌似是1次。
Reducer的个数由Partition的数目确定。该数目可以由用户自己指定: conf.setNumReduceTasks()。
评论暂时关闭