MapReduce
yanrongren
这个作者很懒,什么都没留下…
展开
-
MapReduce二次排序
二次排序的原理 map阶段 调用job.setPartitionerClass()对这个Mapper的输出结果进行分区,每个分区映射到一个Reducer。每个分区又调用job.setSortComparatorClass()设置的key比较函数类排序。这本身就是就是一个二次排序。如果没有通过job.setComparatorClass()设置key比较函数类,则使用key实现的compareTo()方法。我们即可以使用IntPair实现的compareTo()方法,也可以专门定义key比较类函数类。 R原创 2021-04-08 15:16:29 · 158 阅读 · 0 评论 -
MapReduce全排序
方法一: 每个map任务对自己的输入数据进行排序,但是无法做到全局排序,需要将数据传递到reduce,然后通过reduce进行一次总的排序,但是这样做的要求是只有一个reduce任务来完成。 并行度不高,无法发挥分布式计算的特点。 方法二: 使用多个partition对map的结果进行分区,且分区后的结果是有区间的,将多个分区结果拼接起来,就是一个连续的全局排序文件。 hadoop自带的Partitioner的实现有两种,一种为HashPartitioner,默认的分区方式,另一种为TotalOrde原创 2021-04-08 11:37:26 · 139 阅读 · 0 评论