首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

MapReduce框架中全排序的算法思维-学习笔记

2012-09-08 
MapReduce框架中全排序的算法思想--学习笔记??关于全排序的问题? Tom White的书中提出的数据取样方法 ,最

MapReduce框架中全排序的算法思想--学习笔记

?

?关于全排序的问题? Tom White的书中提出的数据取样方法 ,最近学习了一下,下面做个比较,以防后患!!

?

?

主要思想就是在要排序的所有数据中随机取出一定量的数据,这些数据取自三个部分,

1.选取总得数据(键值对)数目

2.选取的split数目

3.每个split选取的键值对数目(只要达到总得键值对数目马上停止采集)

?

?

note :这其中的mapClass ReducerClass都设置成默认的即可,即直接输出键值对,mapreduce框架自带有sort功能,即可满足条件。(为简单测试目的)

?

在mapreduce自带的框架内的TotalOrderPartitioner类就是通过读取这个_partition.lst,并生成对应的trie树,加快前缀匹配速度,以空间换取时间的思想,从而分配可以到对应的reduce内部,然后使用框架自带的排序功能进行局部的排序,从而达到整体的有序。我们也没有必要将这些文件进行合并,

?

它有3个基本特性:

  1)根节点不包含字符,除根节点外每一个节点都只包含一个字符。

  2)从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。

3)每个节点的所有子节点包含的字符都不相同。

?

数据结构:

const int MaxKeySize = 25; //关键码最大位数

  typedef struct { //关键码类型

  KeyType * ch[MaxKeySize]; //关键码存放数组

  int currentSize; //关键码当前位数

} KeyType;

?

下面贴下我自己实现的采样全局排序(为了简单? 没有实现trie树? 直接进行比较? 速度会有一定的影响)

自定义的InputFormat,从而在分片的时候进行采集:

?

?主函数:

?

?

热点排行