首先,我们了解一下mapreduce的核心思想,我们把它总结为天龙八部.
map端:
第一步:按照Fileinputformat格式去读取文件,形成k v对的形式进行输出;key指代是行偏移量,value指代的是一行里面的文本内容
第二步:自定义map逻辑,按照相应的分隔符去拆分文本内容,形成新的k v对,进行输出。
shuffle阶段:
第三步:分区 相同key的value合并到同一个组,形成一个集合
第四步: 排序 按照我们的字典顺序排序
第五步: 归约 在map端进行相同key进行合并,这个操作主要是减少了reduce的输出量
第六步:分组 相同的key分到同一个组
reduce阶段:
第七步: 自定义一个reduce逻辑,将相同key的value进行一个累加,将结果输出
第八步: 文件结果的输出
运行mapreduce之前的数据:
hadoop,hive,hbase
spark,hive,hbase
hadoop,hbase
运行mapreduce之后的数据:
hadoop 2
hive 2
hbase 3
spark 1
第一步:
key value
0 hadoop,hive,hbase
17 spark,hive,hbase
33 hadoop,hbase
第二步:
key value
hadoop