第2节 mapreduce深入学习:2、3

第2节 mapreduce深入学习:2、MapReduce的分区;3、分区案例的补充完成运行实现

在MapReduce中,通过我们指定分区,会将同一个分区的数据发送到同一个reduce当中进行处理,例如我们为了数据的统计,我们可以把一批类似的数据发送到同一个reduce当中去,在同一个reduce当中统计相同类型的数据,就可以实现类似数据的分区,统计等

说白了就是相同类型的数据,送到一起去处理,在reduce当中默认分区只有1个。

MapReduce当中的分区类图:

第2节 mapreduce深入学习:2、3

 

mapreduce的分区以及与reduceTask的个数,物以类聚,人以群分,相同的数据去到同一个reduce

分区主要就是把相同的一批数据,发送到同一个reduce里面去
相同key的数据发送到同一个reduce里面去

例子:需求:将以下数据进行分开处理

详细数据参见partition.csv  这个文本文件,其中第五个字段表示开奖结果数值,现在需求将15以上的结果以及15以下的结果进行分开成两个文件进行保存。

第2节 mapreduce深入学习:2、3

思路图解:
第2节 mapreduce深入学习:2、3

 

注意:分区的案例,只能打成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、输出数据