首页> 中国专利> 一种PB级海量数据的实时查询方法和装置

一种PB级海量数据的实时查询方法和装置

摘要

本发明公开了一种PB级海量数据的实时查询方法和装置,应用于逻辑数据库,包括:通过逻辑数据库响应于用户输入的数据查询请求,确定与所述数据查询请求对应的目标索引信息;根据所述目标索引信息,确定与所述索引信息对应的目标数据文件;所述目标索引信息包括提取起始位置和提取终止位置;在所述目标数据文件中从所述提取起始位置开始按预设提取顺序提取数据记录,直至所述提取终止位置;对所述数据记录进行JSON序列化,生成序列数据并输出。从而解决现有技术的实时查询依赖内存资源,实施成本高的技术问题,进而有效降低实时查询的成本,提高查询效率。

著录项

  • 公开/公告号CN112231351A

    专利类型发明专利

  • 公开/公告日2021-01-15

    原文格式PDF

  • 申请/专利权人 广东亿迅科技有限公司;

    申请/专利号CN202011096617.X

  • 申请日2020-10-14

  • 分类号G06F16/2458(20190101);G06F16/22(20190101);G06F16/28(20190101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人杨小红

  • 地址 510000 广东省广州市天河区中山大道109号1号楼13层

  • 入库时间 2023-06-19 09:35:27

说明书

技术领域

本发明涉及数据查询技术领域,尤其涉及一种PB级海量数据的实时查询方法和装置。

背景技术

在大数据应用中,除了具备大数据计算和分析功能,还需提供数据实时查询能力满足各类数据检索和检索功能。其中原始数据、中间层数据、统计层数据等都存在查询需求。不同类型数据数据量不同,通常原始数据量非常巨大,可达PB级,例如运营商移动用户流量轨迹详单(用户通过移动网络访问互联网内容的轨迹记录)。

针对PB级数据提供实时查询场景,要求存贮引擎具备超大数据容量和快速入库机制,针对大并发查询场景能提供秒级响应性能。同时,作为大数据应用,应支持主流大数据计算框架访问,包括MapReduce、Hive及Spark等。

目前,业界有部分开源产品能提供实时查询功能,例如开源Hive,虽然能够提供海量数据存贮但并不具备实时查询功能;开源HBase,虽然能够进行实时查询,但海量数据的存贮机制复杂,性能不稳定,查询依赖内存资源,实施成本高;关系数据库(开源Mysql/商业Oracle),具备实时查询能力但无法满足PB级海量数据的存贮场景;开源搜索引擎,查询严重依赖内存资源,主机存贮资源利用率低,实施成本高,并且入库性能低,不能满足PB级数据查询场景。由此可见,上述产品都具有一定的局限性,不能满足PB级海量数据实施查询生产场景需求。

发明内容

本发明提供了一种PB级海量数据的实时查询方法和装置,解决了现有技术中的实时查询依赖内存资源,实施成本高的技术问题。

本发明提供的一种PB级海量数据的实时查询方法,应用于逻辑数据库,所述逻辑数据库包括Hive数据库,包括:

响应于用户输入的数据查询请求,确定与所述数据查询请求对应的目标索引信息;

从所述Hive数据库中确定与所述目标索引信息对应的目标数据文件;所述目标索引信息包括提取起始位置和提取终止位置;

在所述目标数据文件中从所述提取起始位置开始按预设提取顺序提取数据记录,直至所述提取终止位置;

对所述数据记录进行JSON序列化,生成序列数据并输出。

可选地,所述逻辑数据库包括HBase索引表,所述响应于用户输入的数据查询请求,确定与所述数据查询请求对应的目标索引信息的步骤,包括:

接收用户输入的数据查询请求,所述数据查询请求包括关键字;

在所述HBase索引表中确定与所述关键字匹配的目标索引信息。

可选地,所述Hive数据库包括多个Hive数据表,每个所述Hive数据表包括多个分区,每个所述分区包括多个数据文件,所述目标索引信息还包括目标Hive表名、目标分区序号和目标文件序号,所述从所述Hive数据库中确定与所述目标索引信息对应的目标数据文件的步骤,包括:

依据所述目标Hive表名从所述Hive数据库中选择目标Hive数据表;

依据所述目标分区序号从所述目标Hive数据表中的多个分区中确定目标分区;其中,所述分区处于可使用状态;

依据所述目标文件序号从所述目标分区中确定目标数据文件。

可选地,所述方法还包括:

当用户输入数据写入请求时,响应于所述数据写入请求,执行数据写入操作。

可选地,所述数据写入请求携带有写入文件规格参数,所述响应于所述数据写入请求,执行数据写入操作的步骤,包括:

响应于所述数据写入请求,接收用户输入的多个输入数据文件;

按照预设关键字的顺序对所述多个输入数据文件进行排序,得到多个已排序数据文件,所述已排序数据文件的大小由所述写入文件规格参数设置;

遍历所述多个已排序数据文件,生成与所述已排序数据文件对应的预设关键字的数量相等的写入索引信息;

在所述HBase索引表中添加所述写入索引信息;

在所述Hive数据表中创建新的分区,并将所述已排序数据文件写入到所述新的分区;

更新所述新的分区的状态为可使用状态。

本发明还提供了一种PB级海量数据的实时查询装置,应用于逻辑数据库,所述逻辑数据库包括Hive数据库,包括:

索引信息确定模块,用于响应于用户输入的数据查询请求,确定与所述数据查询请求对应的目标索引信息;

目标数据文件确定模块,用于根据所述目标索引信息,确定与所述索引信息对应的目标数据文件;所述目标索引信息包括提取起始位置和提取终止位置;

数据记录提取模块,用于在所述目标数据文件中从所述提取起始位置开始按预设提取顺序提取数据记录,直至所述提取终止位置;

序列数据输出模块,用于对所述数据记录进行JSON序列化,生成序列数据并输出。

可选地,所述逻辑数据库包括HBase索引表,所述索引信息确定模块包括:

数据查询请求接收子模块,用于接收用户输入的数据查询请求,所述数据查询请求包括关键字;

目标索引信息确定子模块,用于在所述HBase索引表中确定与所述关键字匹配的目标索引信息。

可选地,所述Hive数据库包括多个Hive数据表,每个所述Hive数据表包括多个分区,每个所述分区包括多个数据文件,所述目标索引信息还包括目标Hive表名、目标分区序号和目标文件序号,所述目标数据文件确定模块包括:

目标Hive数据表选择子模块,用于依据所述目标Hive表名从所述Hive数据库中选择目标Hive数据表;

目标分区确定子模块,用于依据所述目标分区序号从所述目标Hive数据表中的多个分区中确定目标分区;其中,所述分区处于可使用状态;

目标数据文件确定子模块,用于依据所述目标文件序号从所述目标分区中确定目标数据文件。

可选地,所述装置还包括:

数据写入操作执行模块,用于当用户输入数据写入请求时,响应于所述数据写入请求,执行数据写入操作。

可选地,所述数据写入请求携带有写入文件规格参数,所述数据写入操作执行模块包括:

输入数据文件接收子模块,用于响应于所述数据写入请求,接收用户输入的多个输入数据文件;

排序子模块,用于按照预设关键字的顺序对所述多个输入数据文件进行排序,得到多个已排序数据文件,所述已排序数据文件的大小由所述写入文件规格参数设置;

写入索引信息生成子模块,用于遍历所述多个已排序数据文件,生成与所述已排序数据文件对应的预设关键字的数量相等的写入索引信息;

写入索引信息添加子模块,用于在所述HBase索引表中添加所述写入索引信息;

分区写入子模块,用于在所述Hive数据表中创建新的分区,并将所述已排序数据文件写入到所述新的分区;

状态更新子模块,用于更新所述新的分区的状态为可使用状态。

从以上技术方案可以看出,本发明具有以下优点:

通过逻辑数据库响应于用户输入的数据查询请求,确定对应的目标索引信息,再根据目标索引信息确定对应的目标数据文件以及文件中的数据记录的提取起始位置和提取终止位置,选中数据文件并从提取起始位置开始提取数据记录直至提取终止位置,最后对数据记录进行JSON序列化,生成序列数据并输出,从而解决现有技术的实时查询依赖内存资源,实施成本高的技术问题,进而有效降低实时查询的成本,提高查询效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例提供的一种PB级海量数据的实时查询方法的步骤流程图;

图2为本发明可选实施例提供的一种PB级海量数据的实时查询方法的步骤流程图;

图3为本发明实施例提供的数据更新过程的步骤流程图;

图4为本发明实施例提供的一种逻辑数据库的数据结构图;

图5为本发明实施例提供的一种PB级海量数据的实时查询装置的技术架构框图;

图6为本发明实施例提供的一种PB级海量数据的实时查询装置的结构框图。

具体实施方式

本发明实施例提供了一种PB级海量数据的实时查询方法和装置,用于解决现有技术中的实时查询依赖内存资源,实施成本高的技术问题。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1,图1为本发明实施例提供的一种PB级海量数据的实时查询方法的步骤流程图。

本发明提供的一种PB级海量数据的实时查询方法,应用于逻辑数据库,所述逻辑数据库包括Hive数据库,包括:

步骤101,响应于用户输入的数据查询请求,确定与所述数据查询请求对应的目标索引信息;

步骤102,从所述Hive数据库中确定与所述目标索引信息对应的目标数据文件;

在本发明实施例中,当用户需要进行数据查询时,接收用户输入的数据查询请求,确定与数据查询请求对应的目标索引信息,在根据目标索引信息确定目标数据文件的位置,从而确定与所述索引信息对应的数据文件。

值得一提的是,所述目标索引信息包括提取起始位置和提取终止位置。

步骤103,在所述目标数据文件中从所述提取起始位置开始按预设提取顺序提取数据记录,直至所述提取终止位置;

当确定目标数据文件之后,按照目标索引信息中的提取起始位置开始提取数据记录直至提取终止位置,在提取的过程中可以按照顺序进行提取,例如可以根据关键字顺序、时间顺序等进行读取。

值得一提的是,关键字顺序可以由用户依据使用场景进行设置,本发明实施例对此不作限制,例如在电信通话记录查询场景,所有通话记录按照号码关键字排序,通话时间作为排序关键字,所以同一个号码的通话记录是连续存放,而同一个号码的通话记录按照通话时间进行二级排序;或者根据字母的顺序进行读取。

步骤104,对所述数据记录进行JSON序列化,生成序列数据并输出。

在本申请实施例中,通过逻辑数据库响应于用户输入的数据查询请求,确定对应的目标索引信息,再根据目标索引信息确定对应的目标数据文件以及文件中的数据记录的提取起始位置和提取终止位置,选中数据文件并从提取起始位置开始提取数据记录直至提取终止位置,最后对数据记录进行JSON序列化,生成序列数据并输出,从而解决现有技术的实时查询依赖内存资源,实施成本高的技术问题,进而有效降低实时查询的成本,提高查询效率。

请参阅图2,图2为本发明实施例提供的一种PB级海量数据的实时查询方法的步骤流程图。

本发明提供的一种PB级海量数据的实时查询方法,应用于逻辑数据库,所述逻辑数据库包括Hive数据库,包括:

步骤201,响应于用户输入的数据查询请求,确定与所述数据查询请求对应的目标索引信息;

可选地,所述逻辑数据库包括HBase索引表,所述步骤201包括:

接收用户输入的数据查询请求,所述数据查询请求包括关键字;

在所述HBase索引表中确定与所述关键字匹配的目标索引信息。

在本发明实施例中,可以通过接收用户输入的数据查询请求,其中包括关键字,根据关键字在HBase索引表中进行索引信息的匹配检索;当检索到关键字匹配的目标索引信息时,则进行下一步操作。

可选地,若是没有检索到关键字匹配的目标索引信息,则返回空信息。

值得一提的是,在接收用户输入的数据查询请求之前,还可以基于用户在注册中心的注册信息,对数据查询请求对应的用户进行身份鉴权,鉴权成功则进行执行数据查询操作。

HBase是一个分布式的、面向列的开源数据库,就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

Hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据:可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能;可以将SQL语句转换为MapReduce任务运行,通过自己的SQL查询分析需要的内容,这套SQL简称Hive SQL,使不熟悉mapreduce的用户可以很方便地利用SQL语言查询、汇总和分析数据。而mapreduce开发人员可以把自己写的mapper和reducer作为插件来支持hive做更复杂的数据分析。它与关系型数据库的SQL略有不同,但支持了绝大多数的语句如DDL、DML以及常见的聚合函数、连接查询、条件查询。它还提供了一系列的功能:具进行数据提取转化加载,用来存储、查询和分析存储在Hadoop中的大规模数据集,并支持UDF(User-Defined Function)、UDAF(User-Defnes AggregateFunction)和UDTF(User-Defined Table-Generating Function),也可以实现对map和reduce函数的定制,为数据操作提供了良好的伸缩性和可扩展性。

进一步地,所述Hive数据库包括多个Hive数据表,每个所述Hive数据表包括多个分区,每个所述分区包括多个数据文件,所述目标索引信息还包括目标Hive表名、目标分区序号和目标文件序号,上述步骤102可以替换为以下步骤202-204:

步骤202,依据所述目标Hive表名从所述Hive数据库中选择目标Hive数据表;

在具体实现中,索引信息可以包括Hive数据表名、目标分区序号和目标文件序号。由于逻辑数据库通常包含多个数据仓库工具Hive数据表作为存储支持,因此当接收到索引信息之后,为提供检索速度,可以进行分级检索,其中第一步是根据索引信息中的目标Hive表名确定目标Hive数据表。

步骤203,依据所述目标分区序号从所述目标Hive数据表的多个分区中确定目标分区;

在确定目标Hive数据表之后,可以根据目标分区序号在Hive中的多个分区中确定目标分区,为了便于数据更新与扩展,对分区可以设置为不可使用状态和可使用状态,当分区处于可使用状态时,说明该分区该没有进行数据更新和扩展,从中能够选中目标分区,进而还可以防止数据更新与数据检索同时进行所带来的数据误差,其中,所述分区处于可使用状态。

步骤204,依据所述目标文件序号从所述目标分区中确定目标数据文件。

在本发明的一个示例中,可以查看目标分区的多个数据文件的文件序号,当文件序号与目标文件序号相同时,确定目标文件序号对应的数据文件为目标数据文件。

可选地,数据文件可以SequenceFile文件形式存贮在HDFS。

SequenceFile在存储结构上主要由一个Header后跟多条Record组成,Header主要包含了Key classname,value classname,存储压缩算法,用户自定义元数据等信息,此外,还包含了一些同步标识,用于快速定位到记录的边界。每条Record以键值对的方式进行存储,用来表示它的字符数组可以一次解析成:记录的长度、Key的长度、Key值和value值,并且Value值的结构取决于该记录是否被压缩。

HDFS(Hadoop Distributed File System)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。

步骤205,在所述目标数据文件中从所述提取起始位置开始按预设提取顺序提取数据记录,直至所述提取终止位置;

在具体实现中,每个分区可以有多个数据文件,每个数据文件可以包括多个关键字的记录,单个文件记录数可达数亿。单个关键字的记录在同一个数据文件中顺序存放,这样能实现以最少次数IO顺序读取到目标记录,数据文件个数由表参数指定(通过每个SequceFile最大字节数参数,根据输入文件总大小反算出的数据文件个数)。

可选地,为进一步提升检索效率,所述索引信息还可以包括数据记录在数据文件中的位置和数据记录在分区中的条数等信息,因而还可以根据数据数据记录在数据文件中的位置快速确定数据记录,显示数据记录在分区中的条数以便用户进行统计。

步骤206,对所述数据记录进行JSON序列化,生成序列数据并输出。

在具体实现中,对数据记录进行JSON序列化的过程可以如下:

{

"resultCode":0,

"message":"ok",

"data":[{

"field1":"value1-1",

"field2":"value1-2",

"field3":"value1-3",

"field4":"value1-4",

"field5":"value1-5",

"field6":"value1-6",

},{

"field1":"value2-1",

"field2":"value2-2",

"field3":"value2-3",

"field4":"value2-4",

"field5":"value2-5",

"field6":"value2-6",

},{

"field1":"value3-1",

"field2":"value3-2",

"field3":"value3-3",

"field4":"value3-4",

"field5":"value3-5",

"field6":"value3-6",

}]

}

通过上述过程,可以对数据记录进行JSON序列化,以生成序列数据,进而输出给用户进行进一步的使用。

在本发明的一个示例中,所述方法还包括以下步骤:

当用户输入数据写入请求时,响应于所述数据写入请求,执行数据写入操作。

参见图3,上述步骤“响应于所述数据写入请求,执行数据写入操作”可以包括以下子步骤S11-S16:

S11、响应于所述数据写入请求,接收用户输入的多个输入数据文件;

S12、按照预设关键字的顺序对所述多个输入数据文件进行排序,得到多个已排序数据文件,所述已排序数据文件的大小由所述写入文件规格参数设置;

S13、遍历所述多个已排序数据文件,生成与所述预设关键字的数量相等的待添加索引信息;

S14、在所述HBase索引表中添加所述待添加索引信息;

S15、在所述Hive数据表中创建新的分区,并将所述已排序数据文件写入到所述新的分区;

S16、更新所述新的分区的状态为可使用状态。

在本发明实施例中,响应于所述数据写入请求,接收用户输入的多个数据文件,可以通过基于MapReduce开发的排序算法按照关键字顺序对输入数据记录进行排序,并封装为目标数据文件,例如可以封装为SequenceFile文件格式,按照表属性指定的关键字(KEY)排序,使同一关键字的数据记录按照SORT_KEY排序(SORT_KEY由表属性参数定义,一般SORT_KEY使用时间戳字段);再遍历多个数据更新文件,生成与数据文件中关键字数量相等的索引信息,数据文件个数通过参数指定(建议单个目标数据文件参数设置不超过10G,如果分区大小是10T,生成的目标文件数量为1000),其中每个关键字对应一条索引信息,每一条索引信息包括Hive序号、目标分区序号、关键字、目标文件序号及记录位置。

可选地,可以将更新索引信息通过批量Bulkload接口加载到HBase索引表,在所述HBase索引表中添加所述更新索引信息,生成新的HBase索引表。在所述Hive中创建与所述更新文件数量相等的新的分区;将所述新的分区映射到所述Hive,更新所述新的分区的状态为可使用状态。

其中,MapReduce是一种分布式计算模型,是Hadoop的主要组成之一,承担大批量数据的计算功能。MapReduce分为两个阶段:Map(映射)和Reduce(归约),指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

在本发明实施例中,通过逻辑数据库响应于用户输入的数据查询请求,确定对应的目标索引信息,再根据目标索引信息确定对应的目标数据文件以及文件中的数据记录的提取起始位置和提取终止位置,选中数据文件并从提取起始位置开始提取数据记录直至提取终止位置,最后对数据记录进行JSON序列化,生成序列数据并输出,从而解决现有技术的实时查询依赖内存资源,实施成本高的技术问题,进而有效降低实时查询的成本,提高查询效率。

参见图4,图4示出了本发明实施例中的一种逻辑数据库的数据结构图,其中包括逻辑数据库、数据信息和索引信息。

而逻辑数据库在功能上类似关系数据库,具备表名、字段、关键字、排序关键字等概念,包括多个分区Chunk-1至Chunk-n;

数据信息包括以下物理表和数据文件两部分:

物理表:逻辑数据库的字段和分区信息通过Hive承载,每张逻辑数据库会在Hive创建对应的物理表,逻辑数据库的分区会在Hive物理表创建对应的分区Partition,数据文件(SequenceFile)最终归属对应分区Partition;

数据文件:数据记录最终存放在数据文件(SequenceFile),每个分区可以有多个数据文件,每个文件可以多个关键字的记录,单个文件记录数可达数亿。单个关键字的记录在同一个数据文件中顺序存放,这样能实现以最少次数IO顺序读取到目标记录,数据文件个数由表参数指定(通过每个SequceFile最大字节数参数,根据输入文件总大小反算出的数据文件个数)。

索引信息存放在HBase索引表,每个关键字在每个分区都对应一条索引信息,索引信息包括:物理表;分区序号;文件序号;记录在数据文件中的位置;记录在本分区Chunk的条数;

参见图5,图5示出了本发明实施例的一种PB级海量数据的实时查询装置的技术架构框图,其中包括查询服务、数据管理和数据存贮三部分。

查询服务,基于SpringCloud服务框架,提供分布式数据查询服务,数据查询功能通过查询逻辑数据库实现,服务各模块功能:注册中心:提供分布式查询服务实例注册功能,服务网关自动同步在注册中心注册的服务实例,进行服务请求分发;配置中心:为分布式服务实例提供集中配置服务,服务实例启动时从配置中心获取最新配置;服务网关:对外集中服务入口,所有外部请求都通过网关分发到服务实例;认证服务:对查询请求进行身份鉴权,鉴权成功的服务继续执行查询。

数据管理,包括MapReduce:大数据计算框架,入库算法的各个步骤都是基于MapReduce框架研发;入库算法实现从原始无序文件生成目标分区的过程(生成数据文件及索引),入库算法步骤:规整计算:将输入无序数据文件,通过MapReduce计算,生成按照关键字排序的有序SequenceFile,统一关键字多条记录按照SORT_KEY二次排序;索引生成:读取SequenceFile,提取每个关键字的数据记录所在数据文件的序号及偏移量(Offset),索引数据写入中间文件;索引加载:将中间索引文件内容通过HBase的Bulkload机制加载到对应HBase索引表;数据加载:创建目标分区,在逻辑数据库Hive对应表增加分区Chunk对应的分区Partition,并且将该分区Chunk状态设置为可使用状态。

数据存贮,包括逻辑数据库和物理数据两部分,其中逻辑数据库:对应用以二维表形式提供功能,逻辑数据库概念与关系数据库类似,具备表名、字段、关键字(KEY)、排序关键字(SORT_KEY)等信息。应用在使用本方案时,需先定义表结构并创建逻辑数据库,创建逻辑数据库时需指定表名、字段列表、关键字字段及排序关键字字段;物理数据,物理数据融合HDFS、HIVE、HBase及ZooKeeer多种技术实现,其中:a.HDFS:为逻辑数据库提供文件存贮能力,数据以SequenceFile文件形式存贮在HDFS;b.Hive:为逻辑数据库提供字段、分区等管理功能,与逻辑数据库一一对应,另外针对逻辑数据库的每个Chunk,会在Hive对应表创建对应的Parition,装载对应Chunk的多个SequenceFile数据文件;c.HBase:为逻辑数据库提供索引功能,索引数据在入库过程通过Bulkload机制加载;数据查询时先通过HBase查询索引信息,在根据索引信息读取数据文件获取记录;d.ZooKeeper:提供状态数据、表属性等数据存贮,状态数据包括:Chunk状态:记录表每个分区(Chunk)状态,控制Chunk入库状态及生命周期,包括:初始状态(INIT);已规整(COMPACTED);已创建索引(INDEX_CREATED);已加载索引(INDEX_LOADED);已加载数据(DATA_LOADED);已生效(ENABLED);已删除(DELETED);表属性,配置表Chunk容量、主键及排序关键字等参数,主要属性包括:单个Chunk最大容量(CHUNK_MAX_BYTES):单个分区建议不超过10T;包括最多分区(Chunk)数(MAX_CHUNK_COUNT):控制每张表最多分区个数,最大可以到10000个Chunk;关键字字段(KEY);排序字段(SORT_KEY):同一关键字按照SORT_KEY字段排序。

参见图6,图6示出了本发明实施例的一种PB级海量数据的实时查询装置的结构框图。

本发明还提供了一种PB级海量数据的实时查询装置,应用于逻辑数据库,所述逻辑数据库包括Hive数据库,包括:

索引信息确定模块601,用于响应于用户输入的数据查询请求,确定与所述数据查询请求对应的目标索引信息;

目标数据文件确定模块602,用于从所述Hive数据库中确定与所述目标索引信息对应的目标数据文件;所述目标索引信息包括提取起始位置和提取终止位置;

数据记录提取模块603,用于在所述目标数据文件中从所述提取起始位置开始按预设提取顺序提取数据记录,直至所述提取终止位置;

序列数据输出模块604,用于对所述数据记录进行JSON序列化,生成序列数据并输出。

可选地,所述逻辑数据库包括HBase索引表,所述索引信息确定模块601包括:

数据查询请求接收子模块,用于接收用户输入的数据查询请求,所述数据查询请求包括关键字;

目标索引信息确定子模块,用于在所述HBase索引表中确定与所述关键字匹配的目标索引信息。

可选地,所述Hive数据库包括多个Hive数据表,每个所述Hive数据表包括多个分区,每个所述分区包括多个数据文件,所述目标索引信息还包括目标Hive表名、目标分区序号和目标文件序号,所述目标数据文件确定模块602包括:

目标Hive数据表选择子模块,用于依据所述目标Hive表名从所述Hive数据库中选择目标Hive数据表;

目标分区确定子模块,用于依据所述目标分区序号从所述目标Hive数据表中的多个分区中确定目标分区;其中,所述分区处于可使用状态;

目标数据文件确定子模块,用于依据所述目标文件序号从所述目标分区中确定目标数据文件。

可选地,所述装置还包括:

数据写入操作执行模块,用于当用户输入数据写入请求时,响应于所述数据写入请求,执行数据写入操作。

可选地,所述数据写入请求携带有写入文件规格参数,所述数据写入操作执行模块包括:

输入数据文件接收子模块,用于响应于所述数据写入请求,接收用户输入的多个输入数据文件;

排序子模块,用于按照预设关键字的顺序对所述多个输入数据文件进行排序,得到多个已排序数据文件,所述已排序数据文件的大小由所述写入文件规格参数设置;

写入索引信息生成子模块,用于遍历所述多个已排序数据文件,生成与所述预设关键字的数量相等的待添加索引信息;

写入索引信息添加子模块,用于在所述HBase索引表中添加所述待添加索引信息;

分区写入子模块,用于在所述Hive数据表中创建新的分区,并将所述已排序数据文件写入到所述新的分区;

状态更新子模块,用于更新所述新的分区的状态为可使用状态。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号