1.分区涉及到的是多个reduceTask
如果只有1个或0个 , 那么就不存在分区
1.在没有自定义分区的时候,系统采用的 Hash分区
假如 1- 50000的数 2000个
两个区内,
一个区的所有数并不会比另一个区全部大 , 而是散列的,虽然是有序的
记住 ,到达每个reduce的数都是有序 ,但是不保证全局有序
局部有序
这个时候需要自定义分区 , 继承 partitioner , 设为
1-25000 : part-00000
25000-- : part-00001
这个时候我们才可以说 1区的最小值 , 比0区所有的都要大
但是这样做需要考虑的是 , 如果数据在很大
比如 300T
你需要抽样 , 看分布 , 不然很可能一个区分到10T , 另一个区分到 100T的情况
分区的目的是为了压力分布均匀.
就好比两个人挑100斤的东西 , 你让其中一个人180 .
另一个人20斤
那么肯定以最后一个完成作为基准