[发明专利]一种海量外排序方法在审
申请号: | 202110009351.9 | 申请日: | 2021-01-06 |
公开(公告)号: | CN112631787A | 公开(公告)日: | 2021-04-09 |
发明(设计)人: | 薛昌熵 | 申请(专利权)人: | 薛昌熵 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 726412 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 海量 外排 方法 | ||
本发明公开了一种适应于海量数据外排序的方法。先使用采样器多次对海量规模的待排序数据随机采样,得到样本序列后排序;桶的大小为接近可用内存空间,需要分桶的个数为待排序数据体积/桶大小,将排序的样本顺序均匀分配给这些桶,可得桶的上下界;经过一遍粗排,扫描一遍外存中的海量原始数据后,依照桶边界分发到相应的外存桶中,达到桶之间宏观有序,桶内微观无序;最后精排,可选区某个、部分或者全部范围的桶,将桶调入内存,选取某种内排序方法后写回。此方法读写磁盘至多两次,分桶匀称效率高,还可部分优先排序。此方法的运算时间是采样时间、内排序时间加上外存读写两遍时间,空间占用是多一倍辅助空间用于输出最终文件。使用此方法单机亦可轻松完成海量外排序。
技术领域
本发明涉及计算机领域,尤其涉及海量外排序。
背景技术
排序任务是计算机处理数据的基本任务。少量数据可以直接调入内存使用内排序方法排序,而海量数据不能直接调入内存,而从外存中逐次部分调入内存排序。传统的单机外排序算法如归并排序内外存交换次数多,内存效率低,适用规模小;大数据平台可以使用海量数据排序,但需求资源大。
发明内容
因此,本发明设计一种单机即可运行的海量数据外排序方法,方法包括以下步骤:采样,具体包括根据采样得到数据分布,由此划分均匀键值;粗排,具体包括根据均匀键值分桶,扫描待排序数据分发至对应的桶并落盘;精排,具体包括对各个桶文件内排序,组成最终排序后数据。
基于上述目的,本发明提供一种采样划桶方法,包括:多次对待排序数据采样;排序后得到样本分布;根据样本数据的键值累积分布顺次划桶,使得桶的上下界所囊括的数据体积略小于可用内存;若有严重的数据倾斜,出现重复键值,则将该键值独立成桶。
基于上述目的,本发明提供一种粗排方法,包括:扫描待排序数据,将每条数据按照键值划分至所属桶中;将桶落盘,使得不同桶文件之间有序,桶内部数据无序。
基于上述目的,本发明提供一种细排方法,包括:对于粗排序中的每一个桶文件,逐个调入内存内排序;内排序完成后落盘;若只排序部分或者优先排序某一部分,则先选择该范围内的桶细排。
有益效果
1.效率高。比较次数少,没有重复比较;程序简单;适用通用领域。
2.适用于海量排序。利用采样,匀称分桶;内存利用率高,内外存交换少,尽可能利用内存,所用时间主要在外存,相当于磁盘读写两遍时间。
3.所需资源少。单机即可运行,内存要求少。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1出示了本发明的海量外排序方法的流程图
具体实施方式
下面将参照附图更加详细地描述本公开的示例性用例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
如图1所示,本发明实施提供了一种海量外排序方法,举例需要排序1T文本数据文件,有计算机一台,内存1G,现在应用本方法将1T待排序数据全部升序排序后输出到另一块磁盘。具体包括:
100.根据待排序数据分布和内存资源划桶,对1G内存,设定桶大小为0.5G,需要划分约1T/0.5G=2048个桶。假定每个桶由1千条样本确定键值上下界,则需要采样204.8万条样本,具体步骤有:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于薛昌熵,未经薛昌熵许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110009351.9/2.html,转载请声明来源钻瓜专利网。