MapReduce的分区
-
分区: 将相同的 k2 的数据发送到同一个分区中
-
物以类聚,人与群分
案例 将彩票中的彩票结果进行分区操作并输出
需求:
将partition.csv文本文件中的彩票数据进行分区,小于等于15的分到一个区里, 大于15的分到另外一个区里,并最终将数据保存到两个文件中。
思路:怎么进行数据的分区?
-
mapreduce 默认分区的方式是 hashPartiton
(key.hashCode() & Integer.MAX_VALUE) % numReduceTasks; #默认情况numReduceTasks=1
-
如何创建自定义分区
-
创建一个类,继承 Partitioner<K,V>
-
重写 getPartition 方法
-
自定义分区规则,小于等于1 5是个规则0,大于15是个规则1
-
在入口函数在中将分区规则设置到驱动类
-
代码:
https://download.youkuaiyun.com/download/woshilovetg/13735711
linux执行
yarn jar original-day09_mapreduce1-1.0-SNAPSHOT.jar cn.itcast.partition.LotteryMain /input/partition/partition.csv /output/partition