一种分布式顺序表的数据导入方法及其系统的制作方法

文档序号:6384308阅读:277来源:国知局
专利名称:一种分布式顺序表的数据导入方法及其系统的制作方法
技术领域
本发明涉及分布式信息处理技术领域,尤其涉及一种分布式顺序表的数据导入方法及其系统。
背景技术
随着网络应用数据量的不断增大,对数据存储系统的存取性能、存储开销和可靠性提出了更高的要求。分布式顺序表(Distributed Ordered Table简称DOT)是一种最适用于海量数据(TB到PB级)下的数据库系统。由于数据量过大,使用DOT提供的接口导入的时候,需要自上而下逐级寻找Region分片的位置,导致导入数据时间漫长,效率低下。

发明内容
本发明的主要目的是提供一种基于Map/Reduce分布式计算框架的分布式顺序表数据导入技术,能够满足对分布式顺序表的海量数据导入需求,极大地提高数据导入速度。为达此目的,本发明采用以下技术方案—种分布式顺序表的数据导入方法,包括S1、使用Map函数将待导入数据转换为键值对;S2、将所述键值对按照键进行排序;S3、对排序后的键值对进行分片,分别将每个分片分配给一个Reduce函数;S4、各Reduce函数对各自分配的分片进行格式转换,将所述分片转换为所述分布式顺序表的底层数据存储文件要求的格式,将所述格式转换后的分片写入到底层数据存储文件中;S5、将所述底层数据存储文件加载到所述分布式顺序表中。进一步地,在步骤SI之前还包括对原始数据进行抽样分析;在步骤S3中依据所述抽样分析结果对排序后的键值对进行分片。进一步地,所述步骤S2之后还包括将具有相同键的键值对进行合并。根据本发明的同一构思,本发明还提供了一种分布式顺序表的数据导入系统,包括键值对转换模块,用于使用Map函数将待导入数据转换为键值对;排序模块,用于将所述键值对转换模块生成的键值对按照键进行排序;分片模块,用于将经过排序模块排序后的键值对进行分片,分别将每个分片分配给一个Reduce函数;格式转换与存储模块,用于使用各Reduce函数对各自分配的分片进行格式转换,将所述分片转换为所述分布式顺序表的底层数据存储文件要求的格式,将所述格式转换后的分片写入到底层数据存储文件中;数据加载模块,用于将所述格式转换与存储模块存储的底层数据存储文件加载到所述分布式顺序表中。
进一步地,还包括抽样分析模块,用于在使用键值对转换模块进行键值对转换之前,对原始数据进行抽样分析,将所述抽样分析结果用于排序分片模块中的分片处理。进一步地,还包括键值对合并模块,所述键值对经过所述排序模块排序后,用于将具有相同键的键值对进行合并。本发明的有益技术效果是本发明基于Map/Reduce分布式计算框架进行数据快速导入,把导入数据直接写入分布式顺序表的底层数据存储文件,从而节省了 Region分片的定位时间,提高了导入速度。


图1是本发明具体实施例一所述的分布式顺序表的数据导入方法流程图;图2是本发明具体实施例一所述的分布式顺序表的数据导入示意图;图3是本发明具体实施例二所述的分布式顺序表的数据导入方法流程图;图4是本发明具体实施例三所述的分布式顺序表的数据导入系统结构框图;图5是本发明具体实施例四所述的分布式顺序表的数据导入系统结构框图。
具体实施例方式下面结合附图并通过具体实施方式
来进一步说明本发明的技术方案。实施例一图1是本发明实施例一所述的分布式顺序表的数据导入方法流程图,如图1所示,分布式顺序表的数据导入方法包括步骤S101、使用Map函数将待导入数据转换为键值对;各键值对中,键为分布式顺序表的主键,值为该键所对应的数据内容;待导入数据可以是任意形式的数据,例如文本串、二进制序列等。Map函数接收待导入数据后将其转换为若干个键值对< key, value >输出,key表示键,value为值,表示上述键key所对应的数据内容。步骤S102、将键值对按照键进行排序;将步骤SlOl中产生的所有键值对< key, value >按照键key进行排序,这样保证键值对的全局有序,使得在后续步骤写入数据存储文件时可以高速地顺序方式写入。步骤S103、将键值对进行分片;按照预先设定的分片方法,将所述键值对将键划分为多个分片,将每个分片分配给一个Reduce函数进行导入处理。将经过步骤S2排序后的键值对划分为多个分片,每个分片以起止键为边界限定了包含至少一个key的集合。划分之后将每个分片的键值对分配给一个Reduce函数。步骤S104、对各分片进行格式转换,写入底层存储文件;各Reduce函数将各自接收的已经按键key排序的键值对< key, value >转换为所述分布式顺序表的底层数据存储文件所要求的数据格式,并写入到底层数据存储文件中。步骤S105、将底层存储文件写入分布式顺序表。通过HBase提供的数据加载工具,可以将生成的数据文件加载到HBase的表中。
至此,该分布式顺序表就可以提供对已导入数据的访问。图2是本发明具体实施例一所述的分布式顺序表的数据导入示意图,如图2所示,本实施施例以将五个待导入数据,即源数据,包括:源数据1、源数据2……源数据5,分配给三个Map函数将源数据转化为键值对的形式,对所有的键值对按键进行排序,排序之后将所述键值对进行分片,例如分成两个分片,将这两个分片分别分配给两个Reduce函数,每个Reduce函数对所分配的分片进行格式转换,写入底层存储文件,例如输出文件I和输出文件2。将输出文件I和输出文件2写入分布式顺序表。通过上述方法将原始数据直接高速地并行写入分布式顺序表的底层数据存储文件,能极大地提高数据导入的效率。实施例二为了进一步提高数据导入速度,可以对实施例一作进一步的改进:包括:将每个Reduce函数的输入键值对排序之后进行合并操作;对原始数据进行抽样分析。图3是本实施例所述的分布式顺序表的数据导入方法流程图,如图3所示,进一步改进后的分布式顺序表的数据导入方法包括:步骤S301、对待导入数据进行抽样分析;为了使步骤S305中能够均衡地对键进行分片,以及使最后写入的各数据存储文件之间能获得一个比较均衡的负载,在将待导入数据转化为键值对之前还可以进一步包括:使用一个抽样函数对原始数据进行抽样分析,通过以上方式可以为后续各步骤提供一个均衡的分片区间参考,例如,在步骤S305中,依据所述抽样分析结果将所述键值对进行均匀地分片,进一步保证了系统能够稳定高效地运行。步骤S302、使用Map函数`将待导入数据转换为键值对;与实施例一步骤SlOl相同,在此不作赘述。步骤S303、将键值对按照键值进行排序;与实施例一步骤S102相同,在此不作赘述。步骤S304、将具有相同键值的健值对进行合并;将具有相同键的键值对进行合并,作为一个新的键值对。例如,发送给每个Reduce函数Reduce的键值对< key, value >按键key进行排序之后,若其中部分键值对< key,value >具有相同的键key,则可以进一步将这些具有相同键的键值对进行合并,生成一个新的键值对。通过键值对的合并减少了 Reduce函数需要处理的键值对的数量,提高了Reduce函数的处理效率,在数据量很大时通过上述合并操作能取得非常显著的效果。步骤S305、依据抽样分样结果将键值对进行分片;与实施例一步骤S103相同,在此不作赘述。步骤S306、对各分片进行格式转换,将分片写入底层存储文件与实施例一步骤S104相同,在此不作赘述。步骤S307、将底层存储文件写入分布式顺序表。与实施例一步骤S105相同,在此不作赘述。实施例三图4是本实施例所述的分布式顺序表的数据导入系统结构框图,如图4所示,本实施例所述的分布式顺序表的数据导入系统包括:
键值对转换模块401,用于使用Map函数将待导入数据转换为键值对;各键值对中,键为分布式顺序表的主键,值为该键所对应的数据内容;待导入数据可以是任意形式的数据,例如文本串、二进制序列等。Map函数接收待导入数据后将其转换为若干个键值对< key, value >输出,key表示键,value为值,表示上述键key所对应的数据内容。排序模块402,用于将所述键值对转换模块生成的键值对按照键进行排序;将键值对转换模块401中产生的所有键值对< key,value >按照键key进行排序,这样保证键值对的全局有序,使得在后续步骤写入数据存储文件时可以高速地顺序方式写入。分片模块403,用于将经过排序模块排序后的键值对进行分片,分别将每个分片分配给一个Reduce函数;按照预先设定的分片方法,将所述键值对将键划分为多个分片,将每个分片分配给一个Reduce函数进行导入处理。将经过排序模块402排序后的键值对划分为多个分片,每个分片以起止键为边界限定了包含至少一个key的集合。划分之后将每个分片的键值对分配给一个Reduce函数。格式转换与存储模块404,用于使用各Reduce函数对各自分配的分片进行格式转换,将所述分片转换为所述分布式顺序表的底层数据存储文件要求的格式,将所述格式转换后的分片写入到底层数据存储文件中;用于使用各Reduce函数将各自接收的已经按键key排序的键值对< key, value>转换为所述分布式顺序表的底层数据存储文件所要求的数据格式,并写入到底层数据存储文件中。数据加载模块405,用于将所述格式转换与存储模块存储的底层数据存储文件加载到所述分布式顺序表中。实施例四为了进一步提高数据导入速度,可以对实施例三作进一步的改进,包括增加键值对合并模块用于将每个Reduce函数的输入键值对排序之后进行合并操作;增加抽样分析模块用于对原始数据进行抽样分析。图5是本发明具体实施例四所述的分布式顺序表的数据导入系统结构框图,如图5所示,进一步改进后的分布式顺序表的数据导入系统包括括抽样分析模块501,用于在使用键值对转换模块进行键值对转换之前,对原始数据进行抽样分析,将所述抽样分析结果用于排序分片模块中的分片处理;为了使分片模块505中能够均衡地对键进行分片,以及使最后写入的各数据存储文件之间能获得一个比较均衡的负载,在将待导入数据转化为键值对之前还可以进一步包括通过抽样分析模块501,使用一个抽样函数对原始数据进行抽样分析,通过以上方式可以为后续各步骤提供一个均衡的分片区间参考,例如,在分片模块505中,用于依据所述抽样分析结果将所述键值对进行均匀地分片,进一步保证了系统能够稳定高效地运行。键值对转换模块502,用于使用Map函数将待导入数据转换为键值对;与实施例三所述的键值对转换模块401相同,在此不作赘述。排序模块503,用于将所述键值对转换模块生成的键值对按照键进行排序;与实施例三所述排序模块402相同,在此不作赘述。
键值对合并模块504,所述键值对经过所述排序模块排序后,用于将具有相同键的键值对进行合并。用于将具有相同键的键值对进行合并,作为一个新的键值对。例如,发送给每个Reduce函数Reduce的键值对< key, value >按键key进行排序之后,若其中部分键值对< key, value >具有相同的键key,则可以进一步将这些具有相同键的键值对进行合并,生成一个新的键值对。通过键值对的合并减少了 Reduce函数需要处理的键值对的数量,提高了 Reduce函数的处理效率,在数据量很大时通过上述合并操作能取得非常显著的效果。分片模块505,用于将经过排序模块排序后的键值对进行分片,分别将每个分片分配给一个Reduce函数;与实施例三所述分片模块403相同,在此不作赘述。格式转换与存储模块506,用于使用各Reduce函数对各自分配的分片进行格式转换,将所述分片转换为所述分布式顺序表的底层数据存储文件要求的格式,将所述格式转换后的分片写入到底层数据存储文件中;与实施例三所述步骤格式转换与存储模块404相同,在此不作赘述。数据加载模块507,用于将所述格式转换与存储模块存储的底层数据存储文件加载到所述分布式顺序表中。与实施例三所述步数据加载模块405相同,在此不作赘述。本发明采用Hadoop v0. 20. 2和HBase vO. 90. 2作为代码基础,采用Java语言实现,通过MapReduce提供全局排序功能,实现数据读入、映射、全局排序以及最终写入到数据文件中。本发明能够满足对分布式顺序表的海量数据导入需求,极大地提高数据导入速度。以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如计算机中的硬盘、光盘或软盘。 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种 分布式顺序表的数据导入方法,其特征在于,包括: 51、使用Map函数将待导入数据转换为键值对; 52、将所述键值对按照键进行排序; 53、对排序后的键值对进行分片,分别将每个分片分配给一个Reduce函数; 54、各Reduce函数对各自分配的分片进行格式转换,将所述分片转换为所述分布式顺序表的底层数据存储文件要求的格式,将所述格式转换后的分片写入到底层数据存储文件中; 55、将所述底层数据存储文件加载到所述分布式顺序表中。
2.如权利要求1所述的分布式顺序表的数据导入方法,其特征在于,在步骤SI之前还包括:对原始数据进行抽样分析;在步骤S3中依据所述抽样分析结果对排序后的键值对进行分片。
3.如权利要求1或2所述的分布式顺序表的数据导入方法,其特征在于,所述步骤S2之后还包括:将具有相同键的键值对进行合并。
4.一种分布式顺序表的数据导入系统,其特征在于,包括: 键值对转换模块,用于使用Map函数将待导入数据转换为键值对; 排序模块,用于将所述键值对转换模块生成的键值对按照键进行排序; 分片模块,用于将经过排序模块排序后的键值对进行分片,分别将每个分片分配给一个Reduce函数; 格式转换与存储模块,用于使用各Reduce函数对各自分配的分片进行格式转换,将所述分片转换为所述分布式顺序表的底层数据存储文件要求的格式,将所述格式转换后的分片写入到底层数据存储文件中; 数据加载模块,用于将所述格式转换与存储模块存储的底层数据存储文件加载到所述分布式顺序表中。
5.如权利要求4所述的分布式顺序表的数据导入系统,其特征在于,还包括抽样分析模块,用于在使用键值对转换模块进行键值对转换之前,对原始数据进行抽样分析,将所述抽样分析结果用于排序分片模块中的分片处理。
6.如权利要求4或5所述的分布式顺序表的数据导入系统,其特征在于,还包括键值对合并模块,所述键值对经过所述排序模块排序后,用于将具有相同键的键值对进行合并。
全文摘要
本发明公开了一种分布式顺序表的数据导入方法及其系统,方法包括S1、使用Map函数将待导入数据转换为键值对;S2、将所述键值对按照键进行排序;S3、对排序后的键值对进行分片,分别将每个分片分配给一个Reduce函数;S4、各Reduce函数对各自分配的分片进行格式转换,将所述分片转换为所述分布式顺序表的底层数据存储文件要求的格式,将所述格式转换后的分片写入到底层数据存储文件中;S5、将所述底层数据存储文件加载到所述分布式顺序表中。本发明把待导入数据直接写入分布式顺序表的底层数据存储文件,能节省分片定位时间,加快导入速度。
文档编号G06F17/30GK103077183SQ20121054454
公开日2013年5月1日 申请日期2012年12月14日 优先权日2012年12月14日
发明者刘佳, 万浩, 查礼 申请人:北京普泽天玑数据技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1