分区的目的
把不同数据输出到不同reduceTask 最终到输出不同文件中
分区概念
数据的分发到不同reducer /不同文件
就是数据发送到多个目的地规则
hadoop 的默认分区原则
默认规则是: hashpartitioner
按照key的hashCode % reduceTask 数量 = 分区号
默认reduceTask 数量为1,当然也可以在driver 端进行设置
以下是Partition 类中源码
hadoop 的分区作用位置
mapTask 输出先到收集器,收集器数据写入环形缓冲区前先进行分区
自定义partitioner实现
分区号是从0开始的,自定义的时候返回分区号码也必须是从0开始的
public class ProvincePartitioner extends Partitioner