数据查询处理方法、电子装置、计算机设备及存储介质与流程

文档序号:19284413发布日期:2019-11-29 23:21阅读:250来源:国知局
数据查询处理方法、电子装置、计算机设备及存储介质与流程

本发明涉及hadoop平台的数据查询技术领域,尤其涉及一种数据查询处理方法、电子装置、计算机设备及存储介质。



背景技术:

hadoop平台是由apache基金会基于mapreduce并行处理模型而实现的开源软件平台,具有良好的可扩展性,可以被简单、快速地部署在由数十乃至上千台计算机所组成的集群平台上,以便以批量形式对海量数据进行高效的并行处理。mapreduce是面向大数据并行处理的计算模型、框架和平台,mapreduce用于把杂乱无章的数据按照某种特征归纳起来,然后处理并得到最后的结果。要求用户按照mapreduce编程范型来编写相应的处理程序,即可实现对以key-value形式分布存储的数据进行处理的目的。

然而,相较于类似sql这样的数据库查询描述语言,对于缺乏数据库专业背景的普通用户而言,编写数据处理程序的任务依旧复杂,并且对用户之间的沟通与协调造成障碍。hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为mapreduce任务进行运行。

现有技术中,由于数据服务平台的数据量基本是过十亿,例如金管家、埋点、talkingdata、webtrends、ubars数据,并且好多都是没有分区、索引、主键等,经常查询一个数据要几个小时或者根本无法查询、运行脚本慢,这就导致了无法有效的通过hive进行数据的优化处理。

因此,提供一种有效的基于hive任务进行大批量的数据优化处理是亟待解决的技术问题。



技术实现要素:

有鉴于此,本发明提出一种数据查询处理方法、电子装置、计算机设备及存储介质,旨在解决现有技术中无法有效的基于hive任务进行大批量的数据处理的问题。

首先,为实现上述目的,本发明提出一种数据查询处理方法,所述方法包括步骤:

接收用户将查询请求;

基于数据仓库工具,对所述查询请求进行转换,得到对应的mapreduce任务;

基于所述mapreduce任务,设置映射函数和归约函数;

基于所述映射函数和归约函数,获取查询结果。

进一步地,所述基于数据仓库工具,对所述查询请求进行转换,得到对应的mapreduce任务的步骤,包括:

获取数据仓库工具在数据库集群对应的分区描述信息;

根据所述查询请求、所述数据仓库工具和所述分区描述信息生成mapreduce任务。

进一步地,所述基于所述映射函数和归约函数,获取查询结果的步骤,包括:

分别为每个分区表分配一个映射函数,获得第一查询结果;

将所述第一查询结果反馈至所述归约函数,通过所述第一查询结果得到第二查询结果;

将所述第二查询结果确定为与所述查询请求对应的查询结果。

进一步地,所述分别为每个分区表分配一个映射函数,获得第一查询结果的步骤,包括:

分别为每个分区分配一个映射函数;

根据设置的执行参数和时间参数,执行所述映射函数,获得第一查询结果。

进一步地,所述分别为每个分区分配一个映射函数的步骤,包括:

根据所述分区和数据库集群在hadoop中的输入格式,将所述数据库集群的各个分区表转换为各自对应的输入分片;

对于每个所述输入分片,启动预先分配的映射函数执行相应分区的查询。

进一步地,所述分别为每个分区表分配一个映射函数,获得第一查询结果的步骤,包括:

对于每个映射函数,根据该分区表所对应的查询条件生成分区查询语句;

通过所述分区查询语句在所述分区表对应的输入分片中读取数据作为第一查询结果。

进一步地,所述根据设置的执行参数和时间参数,执行所述映射函数,获得第一查询结果的步骤,包括:

根据历史执行日志计算mapreduce作业的执行时间长度均值和映射函数的均值;

基于所述时间长度均值和所述映射函数的均值,设置执行参数和时间参数;

根据所设置的执行参数和时间参数,执行所述映射函数,获得第一查询结果。

此外,为实现上述目的,本发明还提供一种电子装置,所述装置包括:

接收模块,用于接收用户将查询请求;

转换模块,用于基于数据仓库工具,对所述查询请求进行转换,得到对应的mapreduce任务;

设置模块,用于基于所述mapreduce任务,设置映射函数和归约函数;

查询模块,用于基于所述映射函数和归约函数,获取查询结果。

进一步地,所述转换模块,包括:

获取子模块,用于获取数据仓库工具在数据库集群对应的分区描述信息;

生成子模块,用于根据所述查询请求、所述数据仓库工具和所述分区描述信息生成mapreduce任务。

进一步地,所述查询模块,包括:

分配子模块,用于分别为每个分区表分配一个映射函数,获得第一查询结果;

反馈子模块,用于将所述第一查询结果反馈至所述归约函数,通过所述第一查询结果得到第二查询结果;

确定子模块,用于将所述第二查询结果确定为与所述查询请求对应的查询结果。

进一步地,还包括分配子模块,包括:

分配单元,用于分别为每个分区分配一个映射函数;

执行单元,用于根据设置的执行参数和时间参数,执行所述映射函数,获得第一查询结果。

进一步地,所述分配单元具体用于:根据所述分区和数据库集群在hadoop中的输入格式,将所述数据库集群的各个分区表转换为各自对应的输入分片;对于每个所述输入分片,启动预先分配的映射函数执行相应分区的查询。

进一步地,所述分配子模块,用于:对于每个映射函数,根据该分区表所对应的查询条件生成分区查询语句;通过所述分区查询语句在所述分区表对应的输入分片中读取数据作为第一查询结果。

进一步地,所述执行单元,用于:根据历史执行日志计算mapreduce作业的执行时间长度均值,和映射函数的均值;基于所述时间长度均值和所述映射函数的均值,设置的执行参数和时间参数;根据设置的执行参数和时间参数,执行所述映射函数,获得第一查询结果。

此外,为实现上述目的,本发明还提供一种设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现任一项所述数据查询处理方法的步骤。

此外,为实现上述目的,本发明还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现任一项所述数据查询处理方法的步骤。

相较于现有技术,本发明所提出的数据查询处理方法、装置、设备及存储介质,通过接收用户将查询请求;然后通过基于数据仓库工具hive,对所述查询请求进行转换,得到对应的mapreduce任务;设置映射函数和归约函数,然后通过映射函数map,用来把一组键值对映射成一组新的键值对,指定并发的归约函数reduce,用来保证所有映射的键值对中的每一个共享相同的键组,获取查询结果。通过对每一个用户请求都进行转化得到mapreduce任务,然后基于mapreduce任务重新设置映射函数和归约函数,从而实现了对数据库中没有分区、索引和主键值的大量数据进行拆分为小粒度数据循环进行数据的处理,能够有效的基于hive任务进行大批量的数据处理,因此解决了现有技术中无法有效的通过hive进行数据的优化处理的问题。

附图说明

图1是本发明第一实施例之数据查询处理方法的流程示意图;

图2是本发明第二实施例之数据查询处理方法的流程示意图;

图3是本发明第三实施例之数据查询处理方法的流程示意图;

图4是本发明实施例之电子装置一可选的应用环境图;

图5是本发明第一实施例之电子装置的硬件架构示意图;

图6是本发明第一实施例之电子装置的程序模块示意图;

图7是本发明第二实施例之电子装置的程序模块示意图;

图8是本发明第三实施例之电子装置的程序模块示意图。

附图标记:

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

为解决现有技术问题,如图1所示,本发明实施例提供了一种数据查询处理方法,包括步骤如下:

s101,接收用户将查询请求。

本发明实施例中,用户利用主数据库的交互界面,输入查询请求对应的查询语句,并提交查询语句,完成对查询语句进行提交,hadoop平台接收用户发送的查询请求。

s102,基于数据仓库工具,对所述查询请求进行转换,得到对应的mapreduce任务。

需要说明的是,hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能。hive是建立在hadoop上的数据仓库基础构架,可以通过预设的工具用来进行数据提取转化加载(etl),此外,hive定义了简单的类sql查询语言,称为hql,它允许熟悉sql的用户查询数据。

本发明实施例的具体实现中,可以对并行查询语句中的子查询语句进行拆分,具体的拆分过程为:先建立一个自定义函数如split函数,将该函数收入数据库。例如通过语句:“createfunctionmysplit--”将以分隔符分段的字串,按指定的顺序号提取子串,然后通过提取的字符串转置为至少一个mapreduce任务。

s103,基于所述mapreduce任务,设置映射函数和归约函数。

一种实现方式中,针对每一个mapreduce任务,用映射函数map与归约函数reduce编程实现并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理。具体的,每一个子查询语句对应于一个映射函数map与归约函数reduce处理阶段。

s104,基于所述映射函数和归约函数,获取查询结果。

本发明的一种实现方式中,针对按照拆分后的子查询语句,按照映射函数map与归约函数reduce两个阶段,形成mapreduce操作过程;依次通过照映射函数map把复杂的任务分解为多个任务来处理,这样每一个任务在数据或计算的规模相对原任务要大大缩小;且该任务会分配到存放着所需数据的节点上进行计算;任务之间没有依赖关系。

然后通过归约函数reduce对映射函数map阶段的结果进行中,根据映射函数map的结果可以重新确定归约函数reduce,依据本发明实施例用户可以根据实际情况确定归约函数reduce的数量,而且可以同时开多个并行的归约函数reduce进行结果获取。

将每连续的一对操作(即归约函数reduce操作和、映射函数map操作),依据mapreduce规则进行处理,在每一阶段将所对应的map和reduce任务分配到集群计算机中,从而获得查询结果。

相较于现有技术,本发明所提出的数据查询处理方法,通过接收用户将查询请求;然后通过基于数据仓库工具hive,对所述查询请求进行转换,得到对应的mapreduce任务;设置映射函数和归约函数,然后通过映射函数map把一组键值对映射成一组新的键值对,指定并发的归约函数reduce,用来保证所有映射的键值对中的每一个共享相同的键组,获取查询结果。通过对每一个用户请求都进行转化得到mapreduce任务,然后基于mapreduce任务重新设置映射函数和归约函数,从而实现了对数据库中没有分区、索引和主键值的大量数据进行拆分为小粒度数据循环进行数据的处理,能够有效的基于hive任务进行大批量的数据处理。因此,解决了现有技术中无法有效的通过hive进行数据的优化处理的问题。

本发明的一种实施例中,所述基于数据仓库工具,对所述查询请求进行转换,得到对应的mapreduce任务的步骤,如图2所示,包括:

s201,获取数据仓库工具在数据库集群对应的分区描述信息。

s202,根据所述查询请求、所述数据仓库工具和所述分区描述信息生成mapreduce任务。

需要说明的是,hive可以将结构化的数据文件映射为一张数据库表,所以,可以将数据库集群进行分区描述信息,进行粒度细化,然后将查询请求基于每一个分区进行生成mapreduce任务,从而可以在每一个分区进行数据查询。具体的查询过程,本发明提供一种如图3所示的具体实施方式,包括:

s301,分别为每个分区表分配一个映射函数,获得第一查询结果。

需要说明的是,映射函数返回一个迭代器,通过执行每一个mapreduce任务,可以畸形迭代,直到获得对象符合函数条件的组成,并把传送结果给这个迭代器,从而获得第一查询结果。本发明实施例中,具体通过映射函数可以把一组键值对映射成一组新的键值对,这组新的键值对是第一查询结果。

本发明的具体实施例中,步骤s301的实现包括:分别为每个分区分配一个映射函数;根据所设置的执行参数和时间参数,执行所述映射函数,获得第一查询结果。

本发明的具体实施例中,通过设置执行参数和执行时间,进行映射函数的执行,然后通过映射函数和分区的对应能够提高整体数据查询效率,从而减小数据处理所需要的时间。

为了进一步提高执行参数和时间参数的合理性,本发明实施例采用根据历史执行日志计算mapreduce作业的执行时间长度均值,和映射函数的均值;基于所述时间长度均值和所述映射函数的均值,设置执行参数和时间参数;根据所设置的执行参数和时间参数,执行所述映射函数,获得第一查询结果。

本发明实施例可以根据历史的mapreduce作业在预置时间段内的执行时间长度均值获得所对应的映射函数执行时间和射函数执行时间。因此,应用本发明实施例,可以预测可能会产生的映射函数的作业时长均值和规约函数的执行时间均值。

本发明的一种具体实现方式中,对于每个映射函数,根据该分区表所对应的查询条件生成分区查询语句;通过所述分区查询语句在所述分区表对应的输入分片中读取数据作为第一查询结果。

另一种实现方式中,所述分别为每个分区分配一个映射函数的步骤,包括:根据所述分区和数据库集群在hadoop中的输入格式,将所述数据库集群的各个分区表转换为各自对应的输入分片;对于每个所述输入分片,启动预先分配的映射函数执行相应分区的查询。

可以理解的是,hadoop中的工作跟踪器在得到mapreduce执行计划后,根据分区描述信息和数据库集群在hadoop中的输入格式将数据库集群的各个分区表转换为各自对应的输入分片,以mysql数据库为例,工作跟踪器根据分区描述信息和mysql输入格式将每个分区表切分为一个输入分片。

s302,将所述第一查询结果反馈至所述归约函数,通过所述第一查询结果得到第二查询结果。

再通过集合归约函数保证所有映射函数得到的键值对中的每一个共享相同的键组。因此,通过对第一查询结果中键值对的筛查,获得第一查询结果中相同的键组,作为第二查询结果。

s303,将所述第二查询结果确定为与所述查询请求对应的查询结果。

参阅图4和图5所示,是本发明电子装置40一可选的应用环境示意图。

本实施例中,所述电子装置40可通过有线或无线方式与终端设备20以及数据库30进行通信。所述电子装置40通过网络接口43获取所述终端设备20的输入信息,根据获取到的输入信息经过处理后从数据库30中调取对应的查询结果,并将查询结果通过网络接口43发送于所述终端设备20的显示界面上。所述终端设备20包括手机、平板和个人计算机等。所述数据库30至少包括数据服务器。

参阅图4所示,是本发明电子装置40一可选的硬件架构示意图。电子装置40包括,但不仅限于,可通过系统总线相互通信连接存储器41、处理器42以及网络接口43,图4仅示出了具有组件41-43的电子装置40,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述电子装置40的内部存储单元,例如该电子装置40的硬盘或内存。在另一些实施例中,所述存储器也可以是所述电子装置40的外部存储设备,例如该电子装置40上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,所述存储器41还可以既包括所述电子装置20的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述电子装置40的操作系统和各类应用软件,例如数据查询处理系统44的程序代码等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。

所述处理器42在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述电子装置40的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的程序代码或者处理数据,例如运行所述数据查询处理系统44等。

所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述电子装置40与其他电子设备之间建立通信连接。

至此,己经详细介绍了本发明相关设备的硬件结构和功能。下面,将基于上述介绍提出本发明的各个实施例。

首先,本发明提出一种电子装置40。

参阅图3所示,是本发明第一实施例之电子装置40的程序模块示意图。

本实施例中,所述电子装置40包括一系列的存储于存储器41上的计算机程序指令,当该计算机程序指令被处理器42执行时,可以实现本发明各实施例的数据查询处理操作。在一些实施例中,基于该计算机程序指令各部分所实现的特定的操作,电子装置40可以被划分为一个或多个模块。例如,在图6中,所述电子装置40可以被分割成接收模块401、转换模块402、设置模块403、查询模块404。其中:

接收模块401,用于接收用户将查询请求;

转换模块402,用于基于数据仓库工具,对所述查询请求进行转换,得到对应的mapreduce任务;

设置模块403,用于基于所述mapreduce任务,设置映射函数和归约函数;

查询模块404,用于基于所述映射函数和归约函数,获取查询结果。

进一步地,如图7所示,所述转换模块402,包括:

获取子模块701,用于获取数据仓库工具在数据库集群对应的分区描述信息;

生成子模块702,用于根据所述查询请求、所述数据仓库工具和所述分区描述信息生成mapreduce任务。

进一步地,如图8所示,所述查询模块404,包括:

分配子模块801,用于分别为每个分区表分配一个映射函数,获得第一查询结果;

反馈子模块802,用于将所述第一查询结果反馈至所述归约函数,通过所述第一查询结果得到第二查询结果;

确定子模块803,用于将所述第二查询结果确定为与所述查询请求对应的查询结果。

进一步地,还包括分配子模块801,包括:分配单元和执行单元(图中均未示出)。分配单元,用于分别为每个分区分配一个映射函数;执行单元,用于根据设置的执行参数和时间参数,执行所述映射函数,获得第一查询结果。

进一步地,所述分配单元具体用于:根据所述分区和数据库集群在hadoop中的输入格式,将所述数据库集群的各个分区表转换为各自对应的输入分片;对于每个所述输入分片,启动预先分配的映射函数执行相应分区的查询。

进一步地,所述分配子模块801,用于:对于每个映射函数,根据该分区表所对应的查询条件生成分区查询语句;通过所述分区查询语句在所述分区表对应的输入分片中读取数据作为第一查询结果。

进一步地,所述执行单元,用于:根据历史执行日志计算mapreduce作业的执行时间长度均值,和映射函数的均值;基于所述时间长度均值和所述映射函数的均值,设置的执行参数和时间参数;根据设置的执行参数和时间参数,执行所述映射函数,获得第一查询结果。

相较于现有技术,本发明实施例提供的电子装置,通过接收用户将查询请求;然后通过基于数据仓库工具hive,对所述查询请求进行转换,得到对应的mapreduce任务;设置映射函数和归约函数,然后通过映射函数map,用来把一组键值对映射成一组新的键值对,指定并发的归约函数reduce,用来保证所有映射的键值对中的每一个共享相同的键组,获取查询结果。通过对每一个用户请求都进行转化得到mapreduce任务,然后基于mapreduce任务重新设置映射函数和归约函数,从而实现了对数据库中没有分区、索引和主键值的大量数据进行拆分为小粒度数据循环进行数据的处理,实现了有效的基于hive任务进行大批量的数据处理,避免了现有技术中无法有效的通过hive进行数据的优化处理的问题。

本发明还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备至少包括但不限于:可通过系统总线相互通信连接的存储器、处理器等。

本实施例还提供一种存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的存储介质用于存储电子装置20,被处理器执行时实现本发明的数据查询处理。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1