一种基于HBase数据库的数据批量入库的方法和装置制造方法及图纸

技术编号:13449236 阅读:99 留言:0更新日期:2016-08-01 18:37
本发明专利技术公开一种基于HBase数据库的数据批量入库的方法和装置,该方法包括:对待入库源数据提取行键并排序,将排序后的行键按指定的分区个数进行平均分区确定出每个分区范围端值对应的行键;将每个分区范围端值对应的行键分别增加预定长度作为每个预建分区范围的端值;判断HBase数据库中是否有HBase表;如果否,创建HBase表并在HBase表中根据每个预建分区范围的端值建立分区;对待入库源数据按照HBase表中每个分区并行生成对应的HFile文件;将HFile文件批量导入HBase表。通过本发明专利技术的这种数据批量入库方法提高了HFile文件的生成速度及入库速度,从而使得HBase批量入库效率得到极大的提升。

【技术实现步骤摘要】
一种基于HBase数据库的数据批量入库的方法和装置
本专利技术涉及HBase数据库
,具体涉及一种基于HBase数据库的数据批量入库的方法和装置。
技术介绍
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式数据库,HBase不同于一般的关系型数据库,它是一个适合于非结构化数据存储的数据库,利用HBase可以在廉价的PCServer上搭建起大规模结构化存储集群,能有效的降低大数据化背景下的存储成本。但HBase在数据批量入库方面存在一个问题,通过HBase自身提供的入库工具对大批量的数据进行入库时十分缓慢耗时、效率极低,例如,一个上百G的数据文件入库时通常要耗时23-24个小时,甚至更长时间。其批量入库步骤大致如下:1、先将数据文件通过Importtsv工具按分区并行生成为HBase的底层存储文件HFile文件。在此步中极易出现数据倾斜,即由于每个分区都会有范围,在分区范围设计不合理时导致大量的数据过度集中到某一个分区中,从而导致此分区在计算过程中十分缓慢,降低整体运行速度。2、将生成好的HBase底层存储文件HFile文件通过BulkLoad工具批量导入到HBase表中。该步骤中很容易出现HFile文件跨分区,即一个HFile文件中的数据一部分属于A分区范围另一部分数据属于B分区范围,因为HBase底层是通过分区对这些HFile文件进行管理的,一旦生成好的HFile文件出现跨分区,在导入的过程中将再次对此文件进行复制分割,复制分割过程十分耗时,从而大大降低了整体的入库效率。上述两个步骤中所存在的问题严重限制了HBase批量入库效率的提高,使得整个数据入库过程缓慢、耗时较长。
技术实现思路
本专利技术提供了一种基于HBase数据库的数据批量入库的方法和装置,以解决现有的HBase数据库数据批量入库耗时长,效率低的问题。根据本专利技术的一个方面,提供了一种基于HBase数据库的数据批量入库方法,该方法包括:对待入库的源数据,提取行键并排序,将排序后的行键按指定的分区个数进行平均分区,确定出每个分区范围的端值对应的行键;将每个分区范围的端值对应的行键,分别增加预定长度后作为每个预建分区范围的端值;判断所述HBase数据库中是否存在HBase表;如果否,在HBase数据库中创建HBase表,并在HBase表中根据每个预建分区范围的端值建立分区;对待入库的源数据按照HBase表中建立的每个分区,并行生成对应的HFile文件;将生成的HFile文件批量导入HBase表中。其中,该方法还包括:如果是,从已有HBase表中提取每个已有分区范围的端值;根据每个预建分区范围的端值和已有分区范围的端值进行排序处理,得到每个新建分区范围;对待入库的源数据按照每个新建分区范围,并行生成对应的HFile文件;将生成的HFile文件批量导入已有的HBase表中。其中,根据每个预建分区范围的端值和已有分区范围的端值进行排序处理,得到每个新建分区范围包括:对每个预建分区范围的端值和已有分区范围的端值进行排序;由排序后的相邻的每两个端值确定出一个新建分区范围。其中,将生成的HFile文件批量导入HBase表中包括:根据已有Hbase表中每个已有分区范围的端值,将新建分区范围属于该已有分区范围内所生成的HFlie文件对应导入该已有分区里。其中,对待入库的源数据按照每个新建分区范围,并行生成对应的HFile文件包括:将每个新建分区范围分别生成一个分区文件,通过修改Importtsv工具的源码,将生成的分区文件传递给TotalOrderPartitioner类,再通过此修改后的Importtsv工具并行生成对应的HFile文件。其中,对待入库的源数据,提取行键并排序包括:对待入库的源数据,提取全部的行键并排序;或者,对待入库的源数据,提取部分的行键并排序。根据本专利技术的另一个方面,提供了一种基于HBase数据库的数据批量入库装置,该装置包括:分区范围确定单元,用于对待入库的源数据,提取行键并排序,将排序后的行键按指定的分区个数进行平均分区,确定出每个分区范围的端值对应的行键;预建分区范围的端值确定单元,用于将每个分区范围的端值对应的行键,分别增加预定长度后作为每个预建分区范围的端值;HBase表判断单元,用于判断HBase数据库中是否存在HBase表;分区建立单元,用于在HBase表判断单元判断HBase数据库中不存在HBase表时,在HBase数据库中创建HBase表,并在HBase表中根据每个预建分区范围的端值建立分区;HFile文件生成单元,用于对待入库的源数据按照HBase表中建立的每个分区,并行生成对应的HFile文件;HFile文件导入单元,用于将生成的HFile文件批量导入HBase表中。其中,该装置还包括:新建分区范围确定单元,用于在HBase表判断单元判断HBase数据库中存在HBase表时,从已有HBase表中提取每个已有分区范围的端值;根据每个预建分区范围的端值和已有分区范围的端值进行排序处理,得到每个新建分区范围;HFile文件生成单元,用于对待入库的源数据按照每个新建分区范围,并行生成对应的HFile文件;HFile文件导入单元,用于将生成的HFile文件批量导入HBase表中。其中,新建分区范围确定单元,具体用于对每个预建分区范围的端值和已有分区范围的端值进行排序;由排序后的相邻的每两个端值确定出一个新建分区范围。其中,HFlie文件导入单元,用于根据已有Hbase表中每个已有分区范围的端值,将新建分区范围属于该已有分区范围内所生成的HFlie文件对应导入该已有分区里。本专利技术的这种基于HBase数据库的数据批量入库的方法和装置,通过提取待入库的源数据行键并按照指定的分区个数进行平均分区,避免了生成HFile文件过程中出现数据倾斜问题,通过将每个分区范围的端值对应的行键分别增加预定长度后作为每个预建分区范围的端值,使得用于建表的分区范围的端值长度大于行键的长度,以此避免生成的HFile文件跨分区的问题,由此提高了HBase数据库中的底层HFile文件的生成速度以及HFile文件的入库速度,从而使得HBase批量入库效率得到极大的提升。附图说明图1是本专利技术一个实施例提供的一种基于HBase数据库的数据批量入库方法流程图;图2是本专利技术另一个实施例提供的一种基于HBase数据库的数据批量入库方法流程示意图;图3是本专利技术一个实施例提供的一种基于HBase数据库的数据批量入库方法中分区范围交叉处理示意图;图4是本专利技术一个实施例提供的一种基于HBase数据库的数据批量入库装置的框图。具体实施方式本专利技术的核心思想是:针对现有HBase数据中的制约HBase数据库批量入库的关键环节,通过采用对待入库的源数据提取行键并按指定的分区个数进行平均分区,对数据的分区范围进行有效的划分,避免生成HFile文件过程中出现数据倾斜和跨分区的问题。图1是本专利技术一个实施例提供的一种基于HBase数据库的数据批量入库方法流程图,参见图1,在HBase数据库中未有HBase表时,本专利技术的这种数据批量入库方法包括:步骤S110,对待入库的源数据,提取行键并排序,将排序后的行键按指定的分区个数进行平均分区,确定出每个分区范围的端值对应的行键;其中,本文档来自技高网
...

【技术保护点】
一种基于HBase数据库的数据批量入库的方法,其特征在于,该方法包括:对待入库的源数据,提取行键并排序,将排序后的行键按指定的分区个数进行平均分区,确定出每个分区范围的端值对应的行键;将所述每个分区范围的端值对应的行键,分别增加预定长度后作为每个预建分区范围的端值;判断所述HBase数据库中是否存在HBase表;如果否,在HBase数据库中创建HBase表,并在所述HBase表中根据每个预建分区范围的端值建立分区;对所述待入库的源数据按照所述HBase表中建立的每个分区,并行生成对应的HFile文件;将所述生成的HFile文件批量导入所述HBase表中。

【技术特征摘要】
1.一种基于HBase数据库的数据批量入库的方法,其特征在于,该方法包括:对待入库的源数据,提取行键并排序,将排序后的行键按指定的分区个数进行平均分区,确定出每个分区范围的端值对应的行键;将所述每个分区范围的端值对应的行键,分别增加预定长度后作为每个预建分区范围的端值;判断所述HBase数据库中是否存在HBase表;如果否,在HBase数据库中创建HBase表,并在所述HBase表中根据每个预建分区范围的端值建立分区;对所述待入库的源数据按照所述HBase表中建立的每个分区,并行生成对应的HFile文件;将所述生成的HFile文件批量导入所述HBase表中;如果是,从已有HBase表中提取每个已有分区范围的端值;根据所述每个预建分区范围的端值和所述已有分区范围的端值进行排序处理,得到每个新建分区范围;对所述待入库的源数据按照所述每个新建分区范围,并行生成对应的HFile文件;将所述生成的HFile文件批量导入所述已有的HBase表中;其中,所述根据所述每个预建分区范围的端值和所述已有分区范围的端值进行排序处理,得到每个新建分区范围包括:对所述每个预建分区范围的端值和所述已有分区范围的端值进行排序;由排序后的相邻的每两个端值确定出一个所述新建分区范围。2.如权利要求1所述的方法,其特征在于,所述将所述生成的HFile文件批量导入所述已有的HBase表中包括:根据所述已有Hbase表中每个已有分区范围的端值,将新建分区范围属于该已有分区范围内所生成的HFlie文件对应导入该已有分区里。3.如权利要求1所述的方法,其特征在于,所述对所述待入库的源数据按照所述每个新建分区范围,并行生成对应的HFile文件包括:将所述每个新建分区范围分别生成一个分区文件,通过修改Importtsv工具的源码,将生成的所述分区文件传递给TotalOrderPartitioner类,再通过修改后的Importtsv工具并行生成对应的HFile文件。4.如权利要求1所述的方法,其特征在于,所述...

【专利技术属性】
技术研发人员:唐正才王庆磊张国波
申请(专利权)人:北京神州泰岳软件股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1