MapReduce全排序

方法一:
  • 每个map任务对自己的输入数据进行排序,但是无法做到全局排序,需要将数据传递到reduce,然后通过reduce进行一次总的排序,但是这样做的要求是只有一个reduce任务来完成。
  • 并行度不高,无法发挥分布式计算的特点。
方法二:
  • 使用多个partition对map的结果进行分区,且分区后的结果是有区间的,将多个分区结果拼接起来,就是一个连续的全局排序文件。
  • hadoop自带的Partitioner的实现有两种,一种为HashPartitioner,默认的分区方式,另一种为TotalOrderPartitioner,为排序作业创建分区,分区中数据的范围要通过分区文件来指定。
  • 分区文件可以认为指定,如采用等距区间,如果数据分布不均匀导致作业完成时间受限于个别reduce任务完成的时间的影响。
  • 也可以通过抽样器,先对数据进行抽样,根据分布生成分区文件,避免数据倾斜。
    参考文章
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值