Hadoop的二次排序2013-01-08 14:46:53分类:HADOOPhadoop的使用中,一般只关注运行结果。对于mapper和reducer之间的处理逻辑往往不care。比如key-value对到达reducer的先后顺序等目前接触到的运用场景有:1.根据用户操作时间来整理事件链,在网站...
分类:
编程语言 时间:
2014-11-26 20:46:43
阅读次数:
197
看了多篇文档,现总结自己对二次排序的理解; 1.流程 各个阶段; input ---> split ——> recordreader ——> 形成复合键值对textpair? ——> 分区(setGroupingComparatorClass设置的分区方法)输出? ——> 对...
分类:
编程语言 时间:
2014-11-18 16:16:10
阅读次数:
182
import java.io.DataInput;import java.io.DataOutput;import java.io.File;import java.io.IOException;import java.util.StringTokenizer;import org.apache.h...
分类:
编程语言 时间:
2014-11-05 16:59:42
阅读次数:
311
一、概述MapReduce框架对处理结果的输出会根据key值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的。在我们实际的需求当中,往往有要对reduce输出结果进行二次排序的需求。对于二次排序的实现,网络上已经有很多人分享过了,但是对二次排序的实现的原理以及整个MapReduce...
分类:
编程语言 时间:
2014-10-13 12:30:29
阅读次数:
350
直接插入排序适合记录数比较少、给定序列基本有序的情况, 通常,插入排序呈现出二次排序算法中的最佳性能...
分类:
移动开发 时间:
2014-09-18 09:50:53
阅读次数:
233
mr自带的例子中的源码SecondarySort,我重新写了一下,基本没变。这个例子中定义的map和reduce如下,关键是它对输入输出类型的定义:(java泛型编程)public static class Map extends Mapper public static class Reduce ...
分类:
其他好文 时间:
2014-08-14 19:43:59
阅读次数:
255
分析这个原理,的原因是: 1、更好的理解MAPREDUCE的过程。 2、在二次排序时会用到这个原理,二次排序要重写分区方法,重写分组方法;如果原理没搞明白,就无法写二次排序的代码。Key默认分区默认分组自定义分区自定义分组Abc1231、使用系统默认分区方式,是按KEY进行分区。2、KEY相...
分类:
其他好文 时间:
2014-08-14 19:32:39
阅读次数:
170
工作原理:使用如下map和reduce:(特别注意输入输出类型, 其中IntPair为自定义类型)public static class Map extends Mapperpublic static class Reduce extends Reducer 在map阶段,使用job.setInpu...
分类:
其他好文 时间:
2014-08-03 12:36:55
阅读次数:
240
代码测试环境:Hadoop2.4应用场景:在Reducer端一般是key排序,而没有value排序,如果想对value进行排序,则可以使用此技巧。应用实例描述:比如针对下面的数据:a,5
b,7
c,2
c,9
a,3
a,1
b,10
b,3
c,1如果使用一般的MR的话,其输出可能是这样的:a 1
a 3
a 5
b 3
b 10
b 7
c 1
c 9
c 2从数据中可以看到其键是排序的,但...
分类:
其他好文 时间:
2014-07-30 17:29:34
阅读次数:
358
在看hadoop 的二次排序的时候,改写了下, 加了第三个参数, 本来以为是在 public int compareTo(IntPair o) { System.out.println("-----------compareTo"); if (first != o.first...
分类:
其他好文 时间:
2014-07-19 17:10:26
阅读次数:
256