CN108628898A - 数据入库的方法、装置和设备 - Google Patents

数据入库的方法、装置和设备 Download PDF

Info

Publication number
CN108628898A
CN108628898A CN201710175956.9A CN201710175956A CN108628898A CN 108628898 A CN108628898 A CN 108628898A CN 201710175956 A CN201710175956 A CN 201710175956A CN 108628898 A CN108628898 A CN 108628898A
Authority
CN
China
Prior art keywords
data
compression
compressed file
huffman
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710175956.9A
Other languages
English (en)
Other versions
CN108628898B (zh
Inventor
张琳
冯明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Group Hebei Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Group Hebei Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Group Hebei Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201710175956.9A priority Critical patent/CN108628898B/zh
Publication of CN108628898A publication Critical patent/CN108628898A/zh
Application granted granted Critical
Publication of CN108628898B publication Critical patent/CN108628898B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes

Abstract

一种数据入库的方法、装置和设备,包括:启动包括快速排序算法的高速哈夫曼Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件;第一次压缩文件写入Hbase数据库表后,调用二重压缩算法实现对第一次压缩文件的第二次数据压缩,输出第二次压缩文件;基于第二次压缩文件实现Hadoop分布式文件系统HDFS数据入库。采用本发明实施例后,能够减轻网络及磁盘的IO压力,保证数据入库性能。

Description

数据入库的方法、装置和设备
技术领域
本发明涉及计算机领域,尤其涉及一种数据入库的方法、装置和设备。
背景技术
据互联网数据中心(IDC)多年的研究结果表明,全球数据量大约每2年翻一番,每年产生的数据量按指数增长,数据增速符合摩尔定律,预计到2020年,全球总数据量将达到35ZB。如何对这些海量数据进行有效采集、加载、分析和处理已成为大数据应用的一个重要环节及基础。
为实现海量数据的快速处理,一个重要前提是实现海量数据的快速入库,然而随着数据体量越来越庞大,数据入库环节对网络及磁盘的IO性能压力急剧增加,在现有网络及磁盘IO技术性能瓶颈下,如何提升大数据入库性能是摆在技术人员面前的难题。
Hbase是Hadoop核心子项目,它是基于分布式文件系统(HDFS)上面向列的分布式数据库系统,非常擅长实时随机读写大规模数据集。但是随着Hbase入库数据量越来越大,入库性能越来越成为企业、开发人员需要解决的难题。
现有技术中,当前解决Hbase入库性能的主流解决方案可以归纳为三大类:
方案一是对Hbase客户端进行配置参数调优,基本原理是在Client端数据积累到设置阈值后再提交Region Server,此方法可有效减少RPC连接次数。
方案二是在Hbase服务器端配置RPC Handler数量参数。Hbase Region Server通过RPC Handler接收外部请求并进行处理,此方法通过提升RPC Handler数量可以在一定程度上提高Hbase入库请求接收能力(Handler数量有限制,依赖节点硬件)。
方案三是数据压缩,常用Hbase数据压缩算法包括Gzip、LZO以及SNAPPY。
上述三种解决方案在实际应用中都会被逐层采纳使用。其中方案一和方案二的使用效果均与Hbase自身产品版本以及Handler数量相关,能提升的性能较为固定。而方案三提到的常用Hbase数据压缩算法,虽然在实际生产项目中也经常会使用,但是这三种数据压缩算法适用的应用场景不尽相同,算法本身也具备一些不同的局限性。在使用GZIP、LZO、Zippy/Snappy中任意一种压缩算法进行工程实践时,都会不可避免遇到网络及磁盘的IO压力大从而导致出现入库性能受影响的问题。
综上,现有技术中存在以下技术问题:由于网络及磁盘的IO压力大影响数据入库性能。
发明内容
本发明实施例提供了一种数据入库的方法,能够减轻网络及磁盘的IO压力,保证数据入库性能。
本发明实施例还提供了一种数据入库的装置,能够减轻网络及磁盘的IO压力,保证数据入库性能。
本发明实施例还提高了一种设备,能够减轻网络及磁盘的IO压力,保证数据入库性能。
一种数据入库的方法,包括:
启动包括快速排序算法的高速哈夫曼Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件;
第一次压缩文件写入Hbase数据库表后,调用二重压缩算法对第一次压缩文件进行第二次数据压缩,输出第二次压缩文件;
基于第二次压缩文件实现Hadoop分布式文件系统HDFS数据入库。
其中,所述启动包括快速排序算法的高速Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件,包括:
扫描并统计出写入数据中每个字符出现的频率;
通过快速排序算法基于所述频率对每个字符进行排序;
根据每个字符的长度对每个字符进行再次排序,建立霍夫曼字符编码树;
序列化所述霍夫曼字符编码树得到编码后的二进制数据;
压缩所述编码后的二进制数据生成第一次压缩文件。
其中,所述快速排序算法包括:
排序开始时变量i=0,变量j=N-1,N是数组元素数量;
将第一个数组元素A[0]赋值给key;
在数组中从j开始向j-1方向搜索,找到第一个小于key的值A[j],互换A[j]与A[i];
在数组中从i开始向i+1方向搜索,找到第一个大于key的值A[i],互换A[i]与A[j];
继续在数组中从j开始向j-1方向搜索,没有找到小于key的值则j=j-1,没有找到大于key的值则i=i+1,直到i=j快速排序完成。
其中,所述序列化所述霍夫曼字符编码树得到编码后的二进制数据,包括:
通过树压缩算法序列化所述霍夫曼字符编码树得到编码后的二进制数据。
其中,所述压缩所述编码后的二进制数据生成第一次压缩文件,包括:
对编码后的二进制数据进行分段得到分段数据;
压缩所述分段数据得到分段压缩结果;
合并所述分段压缩结果生成第一压缩文件。
其中,所述二重压缩算法包括Snappy算法。
一种数据入库的装置,包括:
第一压缩模块,用于启动包括快速排序算法的高速哈夫曼Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件;
第二压缩模块,用于第一次压缩文件写入Hbase数据库表后,调用二重压缩算法对第一次压缩文件进行第二次数据压缩,输出第二次压缩文件;
入库模块,用于基于第二次压缩文件实现Hadoop分布式文件系统HDFS数据入库。
其中,所述第一压缩模块还用于,扫描并统计出写入数据中每个字符出现的频率;
通过快速排序算法基于所述频率对每个字符进行排序;
根据每个字符的长度对每个字符进行再次排序,建立霍夫曼字符编码树;
序列化所述霍夫曼字符编码树得到编码后的二进制数据;
压缩所述编码后的二进制数据生成第一次压缩文件。
其中,所述快速排序算法包括:
排序开始时变量i=0,变量j=N-1,N是数组元素数量;
将第一个数组元素A[0]赋值给key;
在数组中从j开始向j-1方向搜索,找到第一个小于key的值A[j],互换A[j]与A[i];
在数组中从i开始向i+1方向搜索,找到第一个大于key的值A[i],互换A[i]与A[j];
继续在数组中从j开始向j-1方向搜索,没有找到小于key的值则j=j-1,没有找到大于key的值则i=i+1,直到i=j快速排序完成。
其中,所述第一压缩模块还用于,通过树压缩算法序列化所述霍夫曼字符编码树得到编码后的二进制数据。
其中,所述第一压缩模块还用于,对编码后的二进制数据进行分段得到分段数据;
压缩所述分段数据得到分段压缩结果;
合并所述分段压缩结果生成第一压缩文件。
其中,所述二重压缩算法包括Snappy算法。
一种设备,
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以执行以下步骤:
启动包括快速排序算法的高速哈夫曼Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件;
第一次压缩文件写入Hbase数据库表后,调用二重压缩算法对第一次压缩文件进行第二次数据压缩,输出第二次压缩文件;
基于第二次压缩文件实现Hadoop分布式文件系统HDFS数据入库。
从上述技术方案中可以看出,在本发明实施例中启动包括快速排序算法的高速Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件;第一次压缩文件写入Hbase数据库表后,调用二重压缩算法对第一次压缩文件进行第二次数据压缩,输出第二次压缩文件;基于第二次压缩文件实现分布式文件系统HDFS数据入库。对写入数据采用二次压缩,减小入库数据的数量,进而能够减轻网络及磁盘的IO压力,保证数据入库性能。
附图说明
从下面结合附图对本发明的具体实施方式的描述中可以更好地理解本发明其中,相同或相似的附图标记表示相同或相似的特征。
图1是本发明实施例中数据入库的方法流程示意图;
图2是启动高速Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件的流程示意图;
图3是本发明实施例中数据入库的装置结构示意图;
图4是本发明实施例的数据入库的方法和装置的计算设备的示例性硬件架构的结构图。
具体实施方式
为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。
在本发明实施例中,首先启动包括快速排序算法的高速Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件。然后,调用二重压缩算法对第一次压缩文件进行第二次数据压缩,基于第二次压缩文件实现HDFS数据入库。考虑CPU性能压力和压缩效率对写入数据采用二次压缩,减小入库数据的数量,进而能够减轻网络及磁盘的IO压力,保证数据入库性能。
参见图1是本发明实施例中数据入库的方法流程示意图,具体包括:
S101、启动包括快速排序算法的Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件。
Hbase客户端提请申请准备数据写入Hbase数据库,写入数据包括文件及数据流(如Socket数据流)。
由Hbase客户端启动写入Hbase数据库前的第一次数据压缩工作,此环节由Hbase客户端操作启动高速Huffman压缩算法,通过高速Huffman压缩,输出第一次压缩文件。
传统Huffman压缩算法在编码环节需要对原始数据扫描两遍,第一遍扫描要精确地统计出原始数据中的每个值出现的频率,第二遍是建立霍夫曼树并进行编码,由于需要建立二叉树并遍历二叉树生成编码,因此数据压缩和还原速度都较慢。
本发明实施例中,通过对传统Huffman压缩算法数据处理过程的多个环节进行修改和补充,显著提升传统Huffman压缩算法字符排序速度、减少传统Huffman压缩算法数的存储空间、提升传统Huffman压缩算法压缩速度,有效解决了传统Huffman压缩速度较慢的技术问题。具体参S201-S205。
S102、第一次压缩文件写入Hbase数据库表后,调用二重压缩算法对第一次压缩文件进行第二次数据压缩,输出第二次压缩文件。
在生成第一次压缩文件后,按照一般性调用Hbase写服务API流程类同,启动Hbase客户端Hbase写入工作。
在Hbase内部通过HMASTER、HRegionServer、HRegion、Hfile和MemStore最终实现第一次压缩文件写入Hbase数据库表。
在第一次压缩文件完成Hbase数据库表写入后,需要继续调用分布式文件系统(DFS)客户端实现Hadoop HDFS数据写入。在DFS客户端进行HDFS数据写入前,需要进行二次压缩,此时由DFS客户端调用二重压缩算法Snappy,通过Snappy实现对数据二次压缩,并输出第二次压缩文件。
S103、基于第二次压缩文件实现Hadoop分布式文件系统HDFS数据入库。
基于Snappy的第二次压缩文件,由DFS客户端实现HDFS数据写入。至此,数据于Hbase入库的全过程完成。
在本发明实施例中,首先启动包括快速排序算法的高速Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件。其次,调用二重压缩算法对第一次压缩文件进行第二次数据压缩。最后,基于第二次压缩文件实现Hadoop HDFS数据入库。充分利用Huffman及Snappy的压缩特性能够避免单一压缩算法存在性能瓶颈,考虑CPU性能压力和压缩效率的同时对写入数据采用二次压缩,减小入库数据的数量,进而能够减轻网络及磁盘的IO压力,保证数据入库性能。
参见图2是启动高速Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件的流程示意图,包括:
Huffman是一种常用的压缩方法,是1952年为文本文件建立的,其基本原理是频繁使用的数据用较短的代码代替,很少使用的数据用较长的代码代替,每个数据的代码各不相同,这些代码都是二进制码,且码长是可变的。
S201、扫描并统计出写入数据中每个字符出现的频率。
扫描写入数据。通过扫描,精确地统计出写入数据中的每个字符出现的频率。其中,字符可以包括具体的数值和/或符号。
S202、通过快速排序算法基于每个字符出现的频率对每个字符进行排序。
传统Huffman数据压缩算法中更多的是使用插值及冒泡算法,基于字符出现的频率对字符进行排序。为进一步提升Huffman算法性能,本发明实施例中引入快速排序算法以提升Huffman算法的排序速度。
假设要排序的原始数组是A[0]......A[N-1],首先任意选取一个数据
(通常选用数组的第一个数)作为关键数据,然后将所有比关键数据小的数据都放到关键数据之前,所有比关键数据大的数据都放到关键数据之后,这个过程称为一趟快速排序。
具体来说快速排序算法包括:
1)设置两个变量i、j,排序开始的时候:i=0,j=N-1,N是数组元素数量。
2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]。
3)在数组中从j开始向前即向j-1方向搜索,由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换。
4)在数组中从i开始向后搜索即向i+1方向搜索,由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换。
5)重复3)和4),没有找到小于key的值则j=j-1,没有找到大于key的值则i=i+1,直到i=j快速排序完成。
具体来说,在3)和4)中,没找到符合条件的值,即3)中A[j]不小于key,4)中A[i]不大于key的时候改变j、i的值,则使j=j-1,i=i+1,直至找到符合条件的值为止。找到符合条件的值,进行交换的时候i,j指针位置不变。另外,i=j这一过程一定正好是i+或j-完成的时候,此时快速排序完成。
S203、根据每个字符的长度对每个字符进行再次排序,建立霍夫曼字符编码树。
计算每个字符的长度,基于字符的长度对字符进行再次排序,建立霍夫曼字符树,即Huffman二叉树,并基于Huffman二叉树进行二进制数据编码。
S204、序列化霍夫曼字符编码树得到编码后的二进制数据。
序列化霍夫曼字符编码树得到编码后的二进制数据。可以采用压缩算法对生成的霍夫曼字符编码树进行序列化。例如,可以通过树压缩算法序列化霍夫曼字符编码树得到编码后的二进制数据。采用树压缩算法可以有效减少数据的存储空间。
S205、压缩编码后的二进制数据生成第一次压缩文件。
可以直接压缩编码后的二进制数据生成第一次压缩文件。为了提高性能,还可以采用并行的方式对数据流进行并行分段压缩。
具体的,压缩编码后的二进制数据生成第一次压缩文件具体包括:
对编码后的二进制数据进行分段得到分段数据。然后对每一个分段数据进行压缩得到分段压缩结果。最后合并分段压缩结果生成第一压缩文件。
采用并行的方式对编码后的二级制数据进行并行分段压缩,可以显著提高压缩速度。
本发明实施例中通过对传统Huffman数据压缩算法数据处理过程的采用快速排序算法可以提升排序速度。通过树压缩算法序列化霍夫曼字符编码树可以有效减少数据的存储空间。此外,采用并行分段压缩能够显著提高压缩速度。因此,有效解决了传统Huffman压缩速度较慢的问题。
参见图3是本发明实施例中数据入库的装置结构示意图,数据入库的装置与数据入库的方法相对应,数据入库的装置具体包括:
第一压缩模块301,用于启动包括快速排序算法的高速Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件。
Hbase客户端提请申请准备数据写入Hbase数据库,写入数据包括文件及数据流(如Socket数据流)。
由Hbase客户端启动写入Hbase数据库前的第一次数据压缩工作,此环节由Hbase客户端操作启动高速Huffman压缩算法,通过高速Huffman压缩,输出第一次压缩文件。
传统Huffman压缩算法在编码环节需要对原始数据扫描两遍,第一遍扫描要精确地统计出原始数据中的每个值出现的频率,第二遍是建立霍夫曼树并进行编码,由于需要建立二叉树并遍历二叉树生成编码,因此数据压缩和还原速度都较慢。
本发明实施例中,通过对传统Huffman压缩算法数据处理过程的多个环节进行修改和补充,显著提升传统Huffman压缩算法字符排序速度、减少传统Huffman压缩算法数的存储空间、提升传统Huffman压缩算法压缩速度,有效解决了传统Huffman压缩速度较慢的技术问题。
第二压缩模块302,用于第一次压缩文件写入Hbase数据库表后,调用二重压缩算法对第一次压缩文件进行第二次数据压缩,输出第二次压缩文件。
在生成第一次压缩文件后,按照一般性调用Hbase写服务API流程类同,启动Hbase客户端Hbase写入工作。
在Hbase内部通过HMASTER、HRegionServer、HRegion、Hfile和MemStore最终实现第一次压缩文件写入Hbase数据库表。
在第一次压缩文件完成Hbase数据库表写入后,需要继续调用分布式文件系统DFS客户端实现Hadoop HDFS数据写入。在DFS客户端进行HDFS数据写入前,需要进行数据二次压缩,此时由DFS客户端调用二重压缩算法Snappy,通过Snappy实现对数据二次压缩,并输出第二次压缩文件。
入库模块303,用于基于第二次压缩文件实现Hadoop HDFS数据入库。
具体来说,第一压缩模块201还用于,扫描并统计出写入数据中每个字符出现的频率;通过快速排序算法基于每个字符出现的频率对每个字符进行排序;根据每个字符的长度对每个字符进行再次排序,建立霍夫曼字符编码树;序列化霍夫曼字符编码树得到编码后的二进制数据;压缩编码后的二进制数据生成第一次压缩文件。
本发明实施例中通过对传统Huffman数据压缩算法数据处理过程的采用快速排序算法可以提升排序速度。通过树压缩算法序列化霍夫曼字符编码树可以有效减少数据的存储空间。此外,采用并行分段压缩能够显著提高压缩速度。因此,有效解决了传统Huffman压缩速度较慢的问题。
传统Huffman数据压缩算法中更多的是使用插值及冒泡算法,基于字符出现的频率对字符进行排序。为进一步提升Huffman算法性能,本发明实施例中引入快速排序算法以提升Huffman算法的排序速度。
假设要排序的原始数组是A[0]......A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比关键数据小的数据都放到关键数据之前,所有比关键数据大的数据都放到关键数据之后,这个过程称为一趟快速排序。
具体来说快速排序算法包括:
1)设置两个变量i、j,排序开始的时候:i=0,j=N-1,N是数组元素数量。
2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]。
3)在数组中从j开始向前即向j-1方向搜索,由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换。
4)在数组中从i开始向后搜索即向i+1方向搜索,由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换。
5)重复3)和4),没有找到小于key的值则j=j-1,没有找到大于key的值则i=i+1,直到i=j快速排序完成。
具体来说,在3)和4)中,没找到符合条件的值,即3)中A[j]不小于key,4)中A[i]不大于key的时候改变j、i的值,则使j=j-1,i=i+1,直至找到符合条件的值为止。找到符合条件的值,进行交换的时候i,j指针位置不变。另外,i=j这一过程一定正好是i+或j-完成的时候,此时快速排序完成。
具体来说,第一压缩模块301还用于,通过树压缩算法序列化所述霍夫曼字符编码树得到编码后的二进制数据。采用树压缩算法可以有效减少数据的存储空间。
此外,第一压缩模块301还用于,对编码后的二进制数据进行分段得到分段数据;压缩分段数据得到分段压缩结果;合并分段压缩结果生成第一压缩文件。采用并行的方式对编码后的二级制数据进行并行分段压缩,可以显著提高压缩速度。
在本发明实施例中,首先由第一压缩模块301启动包括快速排序算法的高速Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件。其次,第二压缩模块302调用二重压缩算法实现对第一次压缩文件的第二次数据压缩。最后,入库模块303基于第二次压缩文件实现Hadoop HDFS数据入库。充分看看Huffman及Snappy的压缩特性能够避免单一压缩算法存在性能瓶颈,考虑CPU性能压力和压缩效率的同时对写入数据采用二次压缩,减小入库数据的数量,进而能够减轻网络及磁盘的IO压力,保证数据入库性能。
图4是示出能够实现根据本发明实施例的数据入库的方法和装置的计算设备的示例性硬件架构的结构图。
如图4所示,计算设备400包括输入设备401、输入接口402、中央处理器403、存储器404、输出接口405、以及输出设备406。其中,输入接口402、中央处理器403、存储器404、以及输出接口405通过总线410相互连接,输入设备401和输出设备406分别通过输入接口402和输出接口405与总线410连接,进而与计算设备400的其他组件连接。
具体地,输入设备401接收来自外部(例如,手机终端的摄像头)的输入信息,并通过输入接口402将输入信息传送到中央处理器403;中央处理器403基于存储器404中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器404中,然后通过输出接口405将输出信息传送到输出设备406;输出设备406将输出信息输出到计算设备400的外部供用户使用。
也就是说,图4所示的计算设备也可以被实现为包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现结合图1至图3描述的数据入库的方法和装置。
在一个实施例中,图4所示的计算设备400可以被实现为一种设备,该设备可以包括:存储器,用于存储程序;处理器,用于运行所述存储器中存储的所述程序,以执行以下步骤:启动包括快速排序算法的高速哈夫曼Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件;第一次压缩文件写入Hbase数据库表后,调用二重压缩算法对第一次压缩文件进行第二次数据压缩,输出第二次压缩文件;基于第二次压缩文件实现Hadoop分布式文件系统HDFS数据入库。
在本发明实施例中,首先启动包括快速排序算法的高速Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件。其次,调用二重压缩算法对第一次压缩文件进行第二次数据压缩。最后,基于第二次压缩文件实现Hadoop HDFS数据入库。充分利用Huffman及Snappy的压缩特性能够避免单一压缩算法存在性能瓶颈,考虑CPU性能压力和压缩效率的同时对写入数据采用二次压缩,减小入库数据的数量,进而能够减轻网络及磁盘的IO压力,保证数据入库性能。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使对应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (13)

1.一种数据入库的方法,其特征在于,包括:
启动包括快速排序算法的高速哈夫曼Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件;
第一次压缩文件写入Hbase数据库表后,调用二重压缩算法对第一次压缩文件进行第二次数据压缩,输出第二次压缩文件;
基于第二次压缩文件实现Hadoop分布式文件系统HDFS数据入库。
2.根据权利要求1所述数据入库的方法,其特征在于,所述启动包括快速排序算法的高速Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件,包括:
扫描并统计出写入数据中每个字符出现的频率;
通过快速排序算法基于所述频率对每个字符进行排序;
根据每个字符的长度对每个字符进行再次排序,建立霍夫曼字符编码树;
序列化所述霍夫曼字符编码树得到编码后的二进制数据;
压缩所述编码后的二进制数据生成第一次压缩文件。
3.根据权利要求1或2所述数据入库的方法,其特征在于,所述快速排序算法包括:
排序开始时变量i=0,变量j=N-1,N是数组元素数量;
将第一个数组元素A[0]赋值给key;
在数组中从j开始向j-1方向搜索,找到第一个小于key的值A[j],互换A[j]与A[i];
在数组中从i开始向i+1方向搜索,找到第一个大于key的值A[i],互换A[i]与A[j];
继续在数组中从j开始向j-1方向搜索,没有找到小于key的值则j=j-1,没有找到大于key的值则i=i+1,直到i=j快速排序完成。
4.根据权利要求2所述数据入库的方法,其特征在于,所述序列化所述霍夫曼字符编码树得到编码后的二进制数据,包括:
通过树压缩算法序列化所述霍夫曼字符编码树得到编码后的二进制数据。
5.根据权利要求2所述数据入库的方法,其特征在于,所述压缩所述编码后的二进制数据生成第一次压缩文件,包括:
对编码后的二进制数据进行分段得到分段数据;
压缩所述分段数据得到分段压缩结果;
合并所述分段压缩结果生成第一压缩文件。
6.根据权利要求1所述数据入库的方法,其特征在于,所述二重压缩算法包括Snappy算法。
7.一种数据入库的装置,其特征在于,包括:
第一压缩模块,用于启动包括快速排序算法的高速哈夫曼Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件;
第二压缩模块,用于第一次压缩文件写入Hbase数据库表后,调用二重压缩算法对第一次压缩文件进行第二次数据压缩,输出第二次压缩文件;
入库模块,用于基于第二次压缩文件实现Hadoop分布式文件系统HDFS数据入库。
8.根据权利要求7所述数据入库的装置,其特征在于,所述第一压缩模块还用于,扫描并统计出写入数据中每个字符出现的频率;
通过快速排序算法基于所述频率对每个字符进行排序;
根据每个字符的长度对每个字符进行再次排序,建立霍夫曼字符编码树;
序列化所述霍夫曼字符编码树得到编码后的二进制数据;
压缩所述编码后的二进制数据生成第一次压缩文件。
9.根据权利要求7或8所述数据入库的装置,其特征在于,所述快速排序算法包括:
排序开始时变量i=0,变量j=N-1,N是数组元素数量;
将第一个数组元素A[0]赋值给key;
在数组中从j开始向j-1方向搜索,找到第一个小于key的值A[j],互换A[j]与A[i];
在数组中从i开始向i+1方向搜索,找到第一个大于key的值A[i],互换A[i]与A[j];
继续在数组中从j开始向j-1方向搜索,没有找到小于key的值则j=j-1,没有找到大于key的值则i=i+1,直到i=j快速排序完成。
10.根据权利要求8所述数据入库的装置,其特征在于,所述第一压缩模块还用于,通过树压缩算法序列化所述霍夫曼字符编码树得到编码后的二进制数据。
11.根据权利要求8所述数据入库的装置,其特征在于,所述第一压缩模块还用于,对编码后的二进制数据进行分段得到分段数据;
压缩所述分段数据得到分段压缩结果;
合并所述分段压缩结果生成第一压缩文件。
12.根据权利要求7所述数据入库的装置,其特征在于,所述二重压缩算法包括Snappy算法。
13.一种设备,其特征在于,
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以执行以下步骤:
启动包括快速排序算法的高速哈夫曼Huffman压缩算法对写入数据进行第一次数据压缩生成第一次压缩文件;
第一次压缩文件写入Hbase数据库表后,调用二重压缩算法对第一次压缩文件进行第二次数据压缩,输出第二次压缩文件;
基于第二次压缩文件实现Hadoop分布式文件系统HDFS数据入库。
CN201710175956.9A 2017-03-21 2017-03-21 数据入库的方法、装置和设备 Active CN108628898B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710175956.9A CN108628898B (zh) 2017-03-21 2017-03-21 数据入库的方法、装置和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710175956.9A CN108628898B (zh) 2017-03-21 2017-03-21 数据入库的方法、装置和设备

Publications (2)

Publication Number Publication Date
CN108628898A true CN108628898A (zh) 2018-10-09
CN108628898B CN108628898B (zh) 2021-04-23

Family

ID=63707262

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710175956.9A Active CN108628898B (zh) 2017-03-21 2017-03-21 数据入库的方法、装置和设备

Country Status (1)

Country Link
CN (1) CN108628898B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109199374A (zh) * 2018-10-15 2019-01-15 烟台羿中医疗科技有限公司 一种多导联心电数据记录装置及方法
CN109819259A (zh) * 2019-02-23 2019-05-28 东华理工大学 一种基于Huffman编码的图像再压缩处理方法
CN111510156A (zh) * 2020-06-03 2020-08-07 合肥师范学院 一种基于分段的哈夫曼动态压缩及解压大文件的方法
CN111680012A (zh) * 2020-06-12 2020-09-18 吉林省电力科学研究院有限公司 一种用于供热系统监控数据的数据压缩方法
CN111913957A (zh) * 2020-07-07 2020-11-10 普华云创科技(北京)有限公司 数据序列化后特征提取方法、系统及计算机可读存储介质
CN113641434A (zh) * 2021-08-12 2021-11-12 上海酷栈科技有限公司 一种云桌面数据压缩自适应编码方法、系统及存储设备
CN116318173A (zh) * 2023-05-10 2023-06-23 青岛农村商业银行股份有限公司 一种金融融资服务数字智能管理系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103379136A (zh) * 2012-04-17 2013-10-30 中国移动通信集团公司 一种日志采集数据压缩方法、解压缩方法及装置
CN103428494A (zh) * 2013-08-01 2013-12-04 浙江大学 基于云计算平台的图像序列编码及恢复方法
CN103729429A (zh) * 2013-12-26 2014-04-16 浪潮电子信息产业股份有限公司 一种基于HBase压缩方法
CN104657362A (zh) * 2013-11-18 2015-05-27 深圳市腾讯计算机系统有限公司 数据存储、查询方法和装置
WO2016130557A1 (en) * 2015-02-09 2016-08-18 Bigdatabio, Llc Systems, devices, and methods for encrypting genetic information

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103379136A (zh) * 2012-04-17 2013-10-30 中国移动通信集团公司 一种日志采集数据压缩方法、解压缩方法及装置
CN103428494A (zh) * 2013-08-01 2013-12-04 浙江大学 基于云计算平台的图像序列编码及恢复方法
CN104657362A (zh) * 2013-11-18 2015-05-27 深圳市腾讯计算机系统有限公司 数据存储、查询方法和装置
CN103729429A (zh) * 2013-12-26 2014-04-16 浪潮电子信息产业股份有限公司 一种基于HBase压缩方法
WO2016130557A1 (en) * 2015-02-09 2016-08-18 Bigdatabio, Llc Systems, devices, and methods for encrypting genetic information

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
万明祥: "云环境下索引技术研究", 《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》 *
张汉亭: "信息压缩程序COMPRESS", 《网络新媒体技术》 *
聊勝于無: "【HBase】HBase压缩机制介绍", 《HTTPS://FORUM.HUAWEI.COM/ENTERPRISE/ZH/THREAD-327123.HTML》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109199374A (zh) * 2018-10-15 2019-01-15 烟台羿中医疗科技有限公司 一种多导联心电数据记录装置及方法
CN109819259A (zh) * 2019-02-23 2019-05-28 东华理工大学 一种基于Huffman编码的图像再压缩处理方法
CN111510156A (zh) * 2020-06-03 2020-08-07 合肥师范学院 一种基于分段的哈夫曼动态压缩及解压大文件的方法
CN111680012A (zh) * 2020-06-12 2020-09-18 吉林省电力科学研究院有限公司 一种用于供热系统监控数据的数据压缩方法
CN111913957A (zh) * 2020-07-07 2020-11-10 普华云创科技(北京)有限公司 数据序列化后特征提取方法、系统及计算机可读存储介质
CN113641434A (zh) * 2021-08-12 2021-11-12 上海酷栈科技有限公司 一种云桌面数据压缩自适应编码方法、系统及存储设备
CN116318173A (zh) * 2023-05-10 2023-06-23 青岛农村商业银行股份有限公司 一种金融融资服务数字智能管理系统
CN116318173B (zh) * 2023-05-10 2023-08-11 青岛农村商业银行股份有限公司 一种金融融资服务数字智能管理系统

Also Published As

Publication number Publication date
CN108628898B (zh) 2021-04-23

Similar Documents

Publication Publication Date Title
CN108628898A (zh) 数据入库的方法、装置和设备
US9298774B2 (en) Changing the compression level of query plans
Lemire et al. Consistently faster and smaller compressed bitmaps with roaring
US9934324B2 (en) Index structure to accelerate graph traversal
CN111523001B (zh) 用于存储数据的方法、装置、设备以及存储介质
JP7047228B2 (ja) データ照会方法、装置、電子機器、可読記憶媒体、及びコンピュータープログラム
US7698312B2 (en) Performing recursive database operations
CN103036697B (zh) 一种多维度数据去重方法及系统
CN109471893B (zh) 网络数据的查询方法、设备及计算机可读存储介质
CN112416907A (zh) 一种数据库表数据导入导出方法、终端设备及存储介质
US9830369B1 (en) Processor for database analytics processing
CN112445776B (zh) 基于Presto的动态分桶方法、系统、设备及可读存储介质
CN113516506B (zh) 一种数据处理方法、装置及电子设备
CN115905168A (zh) 自适应压缩方法和压缩装置、计算机设备、存储介质
CN115168358A (zh) 数据库访问方法、装置、电子设备及存储介质
CN114138735A (zh) 一种Janusgraph数据快速批量装载的方法
CN110858199A (zh) 一种单据数据分布式计算的方法和装置
KR102236521B1 (ko) 데이터를 처리하기 위한 방법 및 장치
US11308093B1 (en) Encoding scheme for numeric-like data types
Li et al. A self-aware data compression system on FPGA in Hadoop
Rasel et al. Summarized bit batch-based triangle listing in massive graphs
WO2022173423A1 (en) System for retrieval of large datasets in cloud environments
CN112559547A (zh) 确定多存储对象副本之间一致性的方法及装置
CN111767287A (zh) 数据导入方法、装置、设备及计算机存储介质
CN111158994A (zh) 一种压测性能测试方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant