MapReduce处理数据的过程
input ->map ->shuffle ->reduce ->output
-a 针对input和output来讲
正常情况下,你不需要编写代码,只需要指定需要处理的文件路径即可
-b map和reduce中间有一个shuffle阶段
属于MapReduce框架自己的事情,当然我们可以进行设置
-c 核心关注
map
可以借助idea开发工具查看源码:(一般在源码中都有该类或方法的使用,尽量看源码可以提高你的代码书写水平)
从源码中可以看出该类有四个参数:key的输入和输出,value的输入和输出
public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
而且在该类中可以看到map这个方法,我们重点就是这个map方法,只要理解map方法,那么map的过程就容易理解了:
protected void map(KEYIN key, VALUEIN value,
Context context) throws IOException, InterruptedException {
context.write((KEYOUT) key, (VALUEOUT) value);
}
KEYIN:每行的偏移量(每行有多少个字符,上一行的字符数就是下一行的行偏移量,开始为0)
VALUEIN:每一行的内容
reduce
reduce(KEYIN key, Iterable<VALUEIN> values, Context context)
KEYIN:业务需求中的key的值
Iterable<VALUEIN>:要聚合的值
注意:下面会有例子说明,对应字体颜色表示
整个MapReduce