一种基于Hive解析HFile统计查询HBase的方法和系统的制作方法

文档序号:9396899阅读:368来源:国知局
一种基于Hive解析HFile统计查询HBase的方法和系统的制作方法【
技术领域
】[0001]本发明涉及领域,尤其涉及一种基于Hive解析HFile统计查询HBase的方法和系统。【
背景技术
】[0002]现有技术中查询HBase有三种方案。[0003]方案一:直接访问HBASE读取数据。存储应用发起读取操作命令,HBase客户端接受数据读取请求,根据读取的数据和当前缓存的region判定数据应该交给哪个RegionServer处理。如果Region没有缓存,那么去请求Zookeeper,获取RegionServer。客户端将读取请求发给具体的RegionServer,RegionServer首先在数据缓存中查询,如果命中则直接返回。否则,将从分布式文件系统中读取数据,进行缓存并返回客户端。[0004]方案二:基于分布式计算,使用HIVE关联HBASE方式统计查询。Hive和Hbase有各自不同的特征:hive是高延迟、结构化和面向分析的,hbase是低延迟、非结构化和面向编程的。Hive数据仓库在hadoop上是高延迟的。Hive集成Hbase就是为了使用hbase的一些特性。Hive集成HBase可以有效利用HBase数据库的存储特性,如行更新和列索引等。在集成的过程中注意维持HBasejar包的一致性。Hive集成HBase需要在Hive表和HBase表之间建立映射关系,也就是Hive表的列(columns)和列类型(columntypes)与HBase表的列族(columnfamilies)及列限定词(columnqualifiers)建立关联。每一个在Hive表中的域都存在于HBase中,而在Hive表中不需要包含所有HBase中的列。HBase中的RowKey对应到Hive中为选择一个域使用:key来对应,列族(cf:)映射到Hive中的其它所有域,列为(cf:cq)。[0005]方案三:统计查询和实时查询数据分离。详单存储及统计查询实现建立在E3base基础上,分别建立详单查询表(Hbasetable)和详单统计查询表(Hivetable),入两套数据,查询和统计查询分离。详单查询原流程不变,详单存储接收原始详单按照单列入Hbase库,详单查询通过接口访问Hbase库进行查询。统计查询建立在Hadoop、Hive、Impala基础上,详单存储增加一份用于统计查询的详单入库,直接加载到Hdfs,关联到Hive中表,通过Impala进行统计查询。[0006]上述三种方案在系统架构紧耦合、高并发以及数据一致性方面存在一定缺陷,系统架构紧耦合:目前详单管理和核心业务紧耦合,影响核心业务,10和资源竞争激烈,存储与计算未分离,切机困难。高并发:目前使用Hive进行统计,Hbase服务节点负载较大,操作等待时间较长。数据一致性:数据多份存储,难免影响数据的一致性。【
发明内容】[0007]本发明所要解决的技术问题是提供可独立动态扩展、反应效率高且数据一致性强的基于Hive解析HFile统计查询HBase的方法和系统。[0008]本发明解决上述技术问题的技术方案如下:一种基于Hive解析HFile统计查询HBase的方法,包括以下步骤:[0009]步骤Sl,创建详单存储查询表;[0010]步骤S2,基于所述详单存储查询表将原始详单列入HBase,在HBase的HDFS中存储为HFILE文件;[0011]步骤S3,将Hive基于所述HFILE文件进行关联统计查询。[0012]在上述技术方案的基础上,本发明还可以做如下改进。[0013]进一步地,所述的基于Hive解析HFile统计查询HBase的方法,还包括直接访问所述HBase进行详单查询。[0014]进一步地,步骤S2中所述HFILE文件的HFILE格式为:HFILE的keyvalue对象结构依次为KeyLength、ValueLength、RowLength、Row、ColumnFamilyLength、ColumnFamily、ColumnQualifier、TimeStamp、KeyType和Value。[0015]进一步地,步骤S3中,所述关联统计查询的内容包括字段、各字段之间分隔符以及换行符。[0016]进一步地,所述Row的输入类型为ImmutableBytesWritable;Value类型Text。[0017]本发明解决上述技术问题的另一种技术方案如下:一种基于Hive解析HFile统计查询HBase的系统,包括详单存储查询表创建模块、存储模块和统计查询模块;[0018]所述详单存储查询表创建模块用于创建详单存储查询表;[0019]所述存储模块用于基于详单存储查询表将原始详单列入HBase,在HBase的HDFS中存储为HFILE文件;[0020]所述统计查询模块用于使Hive基于HFILE文件进行关联统计查询。[0021]在上述技术方案的基础上,本发明还可以做如下改进。[0022]进一步地,所述的基于Hive解析HFile统计查询HBase的系统还包括详单查询模块,用于直接访问HBase进行详单查询。[0023]进一步地,所述HFILE文件的HFILE格式为:HFILE的keyvalue对象结构依次为KeyLength、ValueLength、RowLength、Row、ColumnFamilyLength、ColumnFamily、ColumnQualifier、TimeStamp、KeyType和Value。[0024]进一步地,所述关联统计查询的内容包括字段、各字段之间分隔符以及换行符。[0025]进一步地,所述Row的输入类型为ImmutableBytesWritable;Value类型Text。[0026]本发明的有益效果是:本发明能够高效的完成并发读取数据的操作,利用MapReduce实现分布式计算在分布式环境中执行计算任务并输出结果,各个计算彼此独立可以动态扩展;对大数据高并发读取操作,大大提高了反应效率;数据未备份,达到了数据一致性的要求。【附图说明】[0027]图1为本发明所述基于Hive解析HFile统计查询HBase的方法流程图;[0028]图2为本发明所述基于Hive解析HFile统计查询HBase的具体流程图;[0029]图3为本发明所述HFILE的数据格式结构图;[0030]图4为本发明所述基于Hive解析HFile统计查询HBase的系统结构图。【具体实施方式】[0031]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。[0032]图1为本发明所述基于Hive解析HFile统计查询HBase的方法流程图。[0033]如图1所示,一种基于Hive解析HFile统计查询HBase的方法,包括以下步骤:[0034]步骤Sl,创建详单存储查询表;[0035]步骤S2,基于详单存储查询表将原始详单列入HBase,在HBase的HDFS中存储为HFILE文件;[0036]步骤S3,Hive基于HFILE文件进行关联统计查询。[0037]其中还包括直接访问HBase进行详单查询。[0038]如图2所示,具体流程为:详单存储及统计查询实现建立在E3base基础上,分别建立详单存储查询表(Hbasetable)和详单统计查询表(Hivetable),查询和统计查询分离,数据存储单一。详单查询原流程不变,详单存储接收原始详单文件按照单列入Hbase库,详单查询通过接口访问Hbase库进行查询。统计查询建立在Hadoop、Hive基础上,通过hive关联Hbase在HDFS存储的HFILE文件进行统计查询。[0039]基于Hive,通过分布式计算Mapreduce解析Hbase中存储文件(HFile格式)的方式,将数据计算切合到集群中的不同节点上,有效的缓解了大量数据存储和高效率的访问。[0040]具体为:[0041]I)Hbase入库[0042]基于详单存储查询表,对指定表入库,该表以表名为基本路径在HDFS以HFILE数据格式存储,例如,表名niuxl_91,在HDFS的路径/hbase/data/default/niuxl_91。[0043]2)HFILE数据格式[0044]如图3所示,HFile中的每个Key-Value对就是一个简单的byte数组。但这个byte数组包含了很多项信息,并含有固定的结构。[0045]开始是两个长度固定的数值,分别表示Key的长度和Value的长度。紧接着是Key,开始是固定长度的数值,表示RowKey的长度,紧接着是RowKey,然后是固定长度的数值,表示Family的长度,然后是Family,接着是Qualifier,然后是两个固定长度的数值,表示TimeStamp和KeyType(Put/Delete)。Value部分则相对简单,是纯粹的二进制数据。[0046]HBASE是按列存储的,如果内存中有不同的KeyValue,这些KeyValue的rowkey不同,CF(列族)不同,Qualifier(小列)不同。当内存执行flush的时候(操作方法:flush'tablename'),所有的相同列族存储在一起的,并按照如下的顺序排序:[0047]rowkey[0048]列族(实际上相同,此处可忽略)[0049]小列[0050]时间戳<当前第1页1 2 
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1