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

本文详细介绍了MapReduce处理数据的全过程,包括input、map、shuffle、reduce和output五个阶段。在map阶段,对输入数据进行行偏移量和行内容的处理,通过单词分割生成(key, value)对。shuffle阶段则将相同key的数据进行合并。reduce阶段对key的值进行聚合计算。整个MapReduce程序中的数据以(key, value)形式流动,最终输出结果。"
52179366,5533243,最长上升公共子序列算法解析,"['动态规划', '算法', 'ACM竞赛', '序列处理']
最低0.47元/天 解锁文章
2476

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



