第2节 mapreduce深入学习:2、3
第2节 mapreduce深入学习:2、MapReduce的分区;3、分区案例的补充完成运行实现
在MapReduce中,通过我们指定分区,会将同一个分区的数据发送到同一个reduce当中进行处理,例如我们为了数据的统计,我们可以把一批类似的数据发送到同一个reduce当中去,在同一个reduce当中统计相同类型的数据,就可以实现类似数据的分区,统计等
说白了就是相同类型的数据,送到一起去处理,在reduce当中默认分区只有1个。
MapReduce当中的分区类图:
mapreduce的分区以及与reduceTask的个数,物以类聚,人以群分,相同的数据去到同一个reduce
分区主要就是把相同的一批数据,发送到同一个reduce里面去
相同key的数据发送到同一个reduce里面去
例子:需求:将以下数据进行分开处理
详细数据参见partition.csv 这个文本文件,其中第五个字段表示开奖结果数值,现在需求将15以上的结果以及15以下的结果进行分开成两个文件进行保存。
思路图解:
注意:分区的案例,只能打成jar包发布到集群上面去运行,本地模式已经不能正常运行了。
打成jar包提交到集群上面去运行:
hadoop jar partition.jar cn.itcast.demo1.partition.PartitionerMain /partition_in /partition_out
详见代码
参考:
mapReduce编程步骤: 背下来
map阶段两个步骤
1、读取文件,解析成key,value对 k1, v1
2、自定义map逻辑,接收第一步的k1 v1 转换成新的k2 v2输出
shuffle阶段四个步骤
3、分区,相同key的数据发送到同一个reduce,value形成一个集合
4、排序 默认规则排序,按照字段顺序排列
5、规约 小型的reducer,发生在map阶段,可以在map阶段对数据做一次聚合,减少数据传输到reduce量
6、分组 主要作用就是形成集合
reduce阶段两个步骤
7、自定义reduce逻辑,接收k2 v2 的数据,准换成新的k3 v3输出
8、输出数据