数据查询方法、装置及系统的制作方法

文档序号:6541359阅读:151来源:国知局
数据查询方法、装置及系统的制作方法
【专利摘要】本发明公开了一种数据查询方法、装置及装置,属于数据存储领域。所述方法包括:Hive获取针对所述数据库集群的HQL查询语句,所述HQL查询语句中指定的Hive表对应于所述数据库集群中关联的至少两张分区表;根据所述HQL查询语句生成MapReduce执行计划;将所述MapReduce执行计划发送给并行计算架构Hadoop;接收所述Hadoop反馈的查询结果。解决了目前多张关联的分区表无法支持一些关系型查询和统计功能的问题;达到了借助Hive和Hadoop的分布式并行计算特性,来实现对数据库集群中多张关联的分区表的关系型查询和统计功能的效果。
【专利说明】数据查询方法、装置及系统
【技术领域】
[0001]本发明涉及数据存储领域,特别涉及一种数据查询方法、装置及系统。
【背景技术】
[0002]MySQL数据库是一种被广泛使用的数据库。随着数据访问压力的几何倍速增长,单个MySQL数据库的存储能力以及查询能力都会越来越成为数据系统的瓶颈。
[0003]目前常采用多个MySQL数据库组成数据库集群来共同提供服务,通过把原始存储在单个MySQL中的表进行水平分区后,存放到多个MySQL数据库的多张分区表中,每个分区表存储原表中的一部分数据,从而满足大规模的数据库存储需求。
[0004]在实现本发明的过程中,发明人发现现有技术至少存在以下问题:对于单一的数据表,支持各种各样灵活的查询SQL语句;但对于多张关联的分区表,由于每张分区表只存储原表的一部分数据,所以无法支持一些关系型查询和统计功能。

【发明内容】

[0005]为了解决对于多张关联的分区表无法支持一些关系型查询和统计功能的问题,本发明实施例提供了一种数据查询方法、装置及系统。所述技术方案如下:
[0006]第一方面,提供了一种数据查询方法,用于与数据库集群相连的并行数据仓库工具Hive中,所述方法包括:
[0007]获取针对所述数据库集群的HQL查询语句,所述HQL查询语句中指定的Hive表对应于所述数据库集群中关联的至少两张分区表;
[0008]根据所述HQL查询语句生成MapReduce执行计划;
[0009]将所述MapReduce执行计划发送给并行计算架构Hadoop ;
[0010]接收所述Hadoop反馈的查询结果,所述查询结果是所述Hadoop根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务后,通过Reduce化简任务汇总每个Mapper映射任务的查询结果得到的。
[0011]可选地,所述根据所述HQL查询语句生成MapReduce执行计划,包括:
[0012]获取所述HQL查询语句所指定的Hive表在所述数据库集群对应的分区描述信息;
[0013]根据所述HQL查询语句、所述Hive表和所述Hive表的分区描述信息生成所述MapReduce执行计划。
[0014]可选地,所述获取所述HQL查询语句所指定的Hive表在所述数据库集群对应的分区描述信息,包括:
[0015]预先存储所述数据库集群的连接信息;根据所述连接信息从所述数据库集群获取所述分区描述信息;
[0016]或,
[0017]获取预先存储的所述分区描述信息。[0018]可选地,所述根据所述HQL查询语句、所述Hive表和所述Hive表的分区描述信息生成所述MapReduce执行计划,包括:
[0019]根据所述HQL查询语句确定所述数据库集群中每个分区表所对应的查询条件;
[0020]根据所述Hive表生成所述数据库集群在所述Hadoop中的输入格式;
[0021]将所述查询条件、所述分区描述信息和所述数据库集群在所述Hadoop中的输入格式生成为所述MapReduce执行计划的内容。
[0022]第二方面,提供了一种数据查询方法,用于与数据库集群相连的并行计算架构Hadoop中,所述方法包括:
[0023]获取MapReduce执行计划,所述MapReduce执行计划是并行数据仓库工具Hive根据针对所述数据库集群的HQL查询语句生成的,所述HQL查询语句指定的Hive表对应于所述数据库集群中关联的至少两张分区表;
[0024]根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务进行查询;
[0025]通过Reduce化简任务汇总每个Mapper映射任务的查询结果;
[0026]向所述Hive反馈汇总后的查询结果。
[0027]可选地,所述根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务,包括:
[0028]根据所述分区描述信息和所述数据库集群在所述Hadoop中的输入格式将所述数据库集群的各个分区表转换为各自对应的输入分片;
[0029]对于每个所述输入分片,启动相应的所述Mapper映射任务执行相应分区表的查询。
[0030]可选地,所述对于每个所述输入分片,启动相应的所述Mapper映射任务执行相应分区表的查询,包括:
[0031]对于每个所述映射任务,根据所述Mapper映射任务所对应的分区表所对应的查询条件生成分区查询语句;
[0032]通过所述分区查询语句在所述分区表对应的输入分片中读取数据作为查询结果。
[0033]第三方面,提供了一种数据查询装置,用于与数据库集群相连的并行数据仓库工具Hive中,所述装置包括:
[0034]语句接收模块,用于获取针对所述数据库集群的HQL查询语句,所述HQL查询语句中指定的Hive表对应于所述数据库集群中关联的至少两张分区表;
[0035]计划生成模块,用于根据所述HQL查询语句生成MapReduce执行计划;
[0036]计划发送模块,用于将所述MapReduce执行计划发送给并行计算架构Hadoop ;
[0037]结果接收模块,用于接收所述Hadoop反馈的查询结果,所述查询结果是所述Hadoop根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务后,通过Reduce化简任务汇总每个Mapper映射任务的查询结果得到的。
[0038]可选地,所述计划生成模块,包括:信息获取单元和计划生成单元;
[0039]所述信息获取单元,用于获取所述HQL查询语句所指定的Hive表在所述数据库集群对应的分区描述信息;
[0040]所述计划生成单元,用于根据所述HQL查询语句、所述Hive表和所述Hive表的分区描述信息生成所述MapReduce执行计划。
[0041]可选地,所述信息获取单元,包括:
[0042]连接存储子单元,用于预先存储所述数据库集群的连接信息;第一获取子单元,用于根据所述连接信息从所述数据库集群获取所述分区描述信息;
[0043]或,
[0044]第二获取子单元,用于获取预先存储的所述分区描述信息。
[0045]可选地,所述计划生成单元,包括:
[0046]条件生成子单元、格式生成子单元和计划生成子单元;
[0047]所述条件生成子单元,用于根据所述HQL查询语句确定所述数据库集群中每个分区表所对应的查询条件;
[0048]所述格式生成子单元,用于根据所述Hive表生成所述数据库集群在所述Hadoop中的输入格式;
[0049]所述计划生成子单元,用于将所述查询条件、所述分区描述信息和所述数据库集群在所述Hadoop中的输入格式生成为所述MapReduce执行计划的内容。
[0050]第四方面,提供了一种数据查询装置,用于与数据库集群相连的并行计算架构Hadoop中,所述装置包括:
[0051 ] 计划获取模块,用于获取MapReduce执行计划,所述MapReduce执行计划是并行数据仓库工具Hive根据针对所述数据库集群的HQL查询语句生成的,所述HQL查询语句指定的Hive表对应于所述数据库集群中关联的至少两张分区表;
[0052]分区查询模块,用于根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务进行查询;
[0053]结果汇总模块,用于通过Reduce化简任务汇总每个Mapper映射任务的查询结果;
[0054]结果反馈t吴块,用于向所述Hive反馈汇总后的查询结果。
[0055]可选地,所述分区查询模块,包括:
[0056]分片生成单元和分区查询单元;
[0057]所述分片生成单元,用于根据所述分区描述信息和所述数据库集群在所述Hadoop中的输入格式将所述数据库集群的各个分区表转换为各自对应的输入分片;
[0058]所述分区查询单元,用于对于每个所述输入分片,启动相应的所述Mapper映射任务执行相应分区表的查询。
[0059]可选地,所述分区查询单元,包括:
[0060]语句生成子单元和分片查询子单元;
[0061]所述语句生成子单元,用于对于每个所述映射任务,根据所述Mapper映射任务所对应的分区表所对应的查询条件生成分区查询语句;
[0062]所述分片查询子单元,用于通过所述分区查询语句在所述分区表对应的输入分片中读取数据作为查询结果。
[0063]第五方面,提供了一种数据查询系统,所述系统包括数据库集群、与所述数据库集群相连的并行数据仓库工具Hive,以及与所述数据库集群和所述Hive分别相连的并行计算架构Hadoop ;[0064]所述数据库集群,存储有关联的至少两个分区表;
[0065]所述Hive,包括如第三方面提供的所述的数据查询装置;
[0066]所述Hadoop,包括如第四方面提供的所述的数据查询装置。
[0067]本发明实施例提供的技术方案带来的有益效果是:
[0068]通过由Hive将针对数据库集群的HQL查询语句转化为MapReduce执行计划,由Hadoop来执行该MapReduce执行计划在数据库集群的各个分区表中查询数据;解决了目前多张关联的分区表无法支持一些关系型查询和统计功能的问题;达到了借助Hive和Hadoop的分布式并行计算特性,来实现对数据库集群中多张关联的分区表的关系型查询和统计功能的效果。
【专利附图】

【附图说明】
[0069]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0070]图1是本发明实施例提供的数据查询方法所涉及的实施环境的结构示意图;
[0071]图2是本发明一个实施例提供的数据查询方法的方法流程图;
[0072]图3A是本发明另一实施例提供的数据查询方法的方法流程图;
[0073]图3B是图3A实施例提供的数据查询方法在具体实施时的实施示意图;
[0074]图4是本发明一个实施例提供的数据查询系统的结构方框图;
[0075]图5是本发明另一实施例提供的数据查询系统的结构方框图。
【具体实施方式】
[0076]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0077]请参考图1,其示出了本发明实施例提供的数据查询方法所涉及的实施环境的结构示意图。该实施环境包括数据库集群120、与数据库集群120相连的并行数据仓库工具Hivel40、与数据库集群120相连的并行计算架构Hadoopl60。并行计算架构Hadoopl60还与并行数据仓库工具HiveHO相连。
[0078]数据库集群120存储有关联的至少两张分区表以及这些分区表的分区描述信息。分区描述信息用于描述一张原始表被拆分为至少两张分区表时的拆分信息,比如,一张表被拆分为几张分区表,每张分区表分布在数据库集群120中的哪个服务器上。数据库集群120可以是MySQL数据库集群。
[0079]Hivel40是基于并行计算架构Hadoop的一个并行数据仓库工具。Hivel40中会建立一张Hive表,该Hive表与数据库集群120中的所有分区表相关联。Hivel40用于接收用户的HQL查询语句,然后将该HQL查询语句转换为MapReduce (映射-化简)执行计划。HiveHO通常包括有驱动器142、编译器144、元数据存储区146和执行引擎148。
[0080]Hadoop 160用于执行Hive 140提交的MapReduce执行计划,根据该MapReduce执行计划从数据库集群120查询数据,并向HiveHO返回查询结果。Hadoopl60通常包括工作跟踪器JOB TRACKER162,用于根据MapReduce执行计划生成MapperTask映射任务和Reduce化简任务。HadoopieO通常还包括:映射任务跟踪器164和化简任务跟踪器166。
[0081]请参考图2,其示出了本发明一个实施例提供的数据查询方法的方法流程图。本实施例以该数据查询方法应用于图1所示的实施环境来举例说明。该数据查询方法包括:
[0082]步骤201,Hive获取针对数据库集群的HQL查询语句;
[0083]该HQL查询语句中指定的Hive表对应于数据库集群中关联的至少两张分区表;
[0084]步骤202, Hive根据该HQL查询语句生成MapReduce执行计划;
[0085]步骤203, Hive将MapReduce执行计划发送给Hadoop ;
[0086]步骤204, Hadoop 获取 MapReduce 执行计划;
[0087]该MapReduce执行计划是并行数据仓库工具Hive根据针对所述数据库集群的HQL查询语句生成的,所述HQL查询语句指定的Hive表对应于所述数据库集群中关联的至少两张分区表。
[0088]步骤205, Hadoop根据MapReduce执行计划为数据库集群中的每个分区表启动一个Mapper映射任务;
[0089]步骤206, Hadoop通过Reduce化简任务汇总每个Mapper映射任务的查询结果;
[0090]步骤207, Hadoop向Hive反馈汇总后的查询结果。
[0091]对应地,Hive接收Hadoop反馈的查询结果。
[0092]综上所述,本实施例提供的数据查询方法,通过由Hive将针对数据库集群的HQL查询语句转化为MapReduce执行计划,由Hadoop来执行该MapReduce执行计划在数据库集群的各个分区表中查询数据;解决了目前多张关联的分区表无法支持一些关系型查询和统计功能的问题;达到了借助Hive和Hadoop的分布式并行计算特性,来实现对数据库集群中多张关联的分区表的关系型查询和统计功能的效果。
[0093]其中,上述步骤201至步骤203可以单独实现成为Hive侧的数据查询方法;上述步骤204至步骤207可以单独实现成为Hadoop侧的数据查询方法。
[0094]请参考图3A,其示出了本发明另一实施例提供的数据查询方法的方法流程图。本实施例以该数据查询方法应用于图1所示的实施环境来举例说明。该数据查询方法包括:
[0095]步骤301,Hive获取针对数据库集群的HQL查询语句,HQL查询语句中指定的Hive表对应于数据库集群中关联的至少两张分区表;
[0096]Hive可以预先建立一张Hive表,该Hive表对应于数据库集群中关联的全部分区表。比如,一张原始表在MySQL集群中被拆分为关联的100张分区表,则Hive可以建立一张Hive表与该关联的100张分区表对应。
[0097]在用户希望对数据库集群进行查询时,通过Hive提供的用户界面向Hive发出HQL查询语句。Hive通过驱动器获取该HQL查询语句,该HQL查询语句中所指定的Hive表即为对应于数据库集群中关联的多张分区表。
[0098]步骤302,Hive获取该Hive表在数据库集群对应的分区描述信息;
[0099]由于该Hive表与数据库集群中的多张分区表对应,而这些分区表的分区描述信息描述了这些分区表的拆分信息以及这些分区表在数据库集群中的存储位置,所以Hive需要获取该Hive表在数据库集群对应的分区描述信息。
[0100]Hive中的驱动器在接收到的HQL查询语句后,会将该HQL查询语句交给Hive中的编译器进行处理。Hive中的编译器通过元数据存储区获取分区描述信息。
[0101]具体来讲,本步骤有两种不同的实现方式:
[0102]第一,Hive预先存储数据库集群的连接信息,根据连接信息从数据库集群获取分区描述信息;
[0103]也即,此种方式下分区描述信息存储在数据库集群中,Hive可以通过在Hive表中预先存储的连接信息从数据库集群获取分区描述信息。
[0104]第二,Hive获取在Hive表中预先存储的分区描述信息。
[0105]也即,此种方式下,分区描述信息被预先存储在元数据存储区,Hive中的编译器从元数据存储区获取该分区描述信息。
[0106]步骤303,Hive根据HQL查询语句、Hive表和Hive表的分区描述信息生成MapReduce执行计划。
[0107]本步骤具体包括如下子步骤:
[0108]第一,Hive根据HQL查询语句确定数据库集群中每个分区表所对应的查询条件;
[0109]由于HQL查询语句是针对所有分区表的,所以Hive中的编译器需要根据将HQL查询语句确定数据库集群中每个分区表所对应的查询条件。比如,对于分区表a需要查询所有数据,对于分区表b需要查询符合某一条件的数据等。
[0110]第二,Hive根据Hive表生成数据库集群在Hadoop中的输入格式;
[0111]输入格式(InputFormat)是Hadoop中执行MapReduce执行计划时的关键因素。由于本实施例中需要将数据库集群中的各个分区表作为Hadoop执行MapReduce执行计划时所需要处理的数据,所以Hive中的编译器需要根据Hive表生成数据库集群在Hadoop中的输入格式。
[0112]第三,Hive将查询条件、分区描述信息和数据库集群在Hadoop中的输入格式生成为MapReduce执行计划的内容。
[0113]步骤304, Hive将MapReduce执行计划发送给Hadoop ;
[0114]Hive中的编译器生成MapReduce执行计划后,将该MapReduce执行计划内部传输给驱动器,驱动器再将该MapReduce执行计划内部传输给执行引擎。执行引擎则将该MapReduce执行计划传输给Hadoop执行。
[0115]步骤305, Hadoop 获取 MapReduce 执行计划;
[0116]该MapReduce执行计划是Hive根据针对数据库集群的HQL查询语句生成的,HQL查询语句指定的Hive表对应于数据库集群中关联的至少两张分区表。
[0117]步骤306, Hadoop根据MapReduce执行计划为数据库集群中的每个分区表启动一个Mapper映射任务进行查询;
[0118]由于MapReduce执行计划本身即为分布式计算架构,原理即为将一个总的执行计划分配为多个并行任务来处理。而本实施例则针对每个分区表分别启动一个Mapper映射任务来进行查询。利用MapReduce执行计划的分布式计算特性来实现多张分区表的综合查询和统计。具体来讲,本步骤包括:
[0119]第一,根据分区描述信息和数据库集群在Hadoop中的输入格式将数据库集群的各个分区表转换为各自对应的输入分片;
[0120]Hadoop中的工作跟踪器JOB TRACKER在得到MapReduce执行计划后,根据分区描述信息和数据库集群在Hadoop中的输入格式将数据库集群的各个分区表转换为各自对应的输入分片(InputSplit)。
[0121]结合图3B可知,以MySQL数据库为例,JOB TRACKER根据分区描述信息和MySQL输入格式将每个分区表32切分为一个输入分片34。
[0122]第二,对于每个输入分片,启动相应的Mapper映射任务执行相应分区表的查询。
[0123]Hadoop中的工作跟踪器JOB TRACKER,还对于每个输入分片,启动相应的Mapper映射任务36执行相应分区表的查询。Mapper映射任务36的执行过程由映射任务跟踪器164管理。
[0124]具体来讲,对于每个映射任务,Hadoop根据Mapper映射任务所对应的分区表所对应的查询条件生成分区查询语句,比如SQL语句,并通过分区查询语句在分区表对应的输入分片中读取数据作为查询结果。读取数据的过程可以由记录读取器RecordReader实现,记录读取器从输入分片中读出一条条K-V键值供Mapper映射任务使用。
[0125]步骤307, Hadoop通过Reduce化简任务汇总每个Mapper映射任务的查询结果;
[0126]每个Mapper映射任务的查询结果将会交给对应的Reduce化简任务,Reduce化简任务汇总每个Mapper映射任务的查询结果,得到最终汇总后的查询结果。
[0127]步骤308, Hadoop向Hive反馈汇总后的查询结果。
[0128]Hadoop中的工作跟踪器JOB TRACKER向Hive反馈汇总后的查询结果。Hive接收Hadoop反馈的汇总后的查询结果。也即,Hive中的执行引擎将汇总后的查询结果内部传输给驱动器,驱动器将汇总后的查询结果反馈给用户。
[0129]至此,完成整个查询统计过程。
[0130]综上所述,本实施例提供的数据查询方法,通过由Hive将针对数据库集群的HQL查询语句转化为MapReduce执行计划,由Hadoop来执行该MapReduce执行计划在数据库集群的各个分区表中查询数据;解决了目前多张关联的分区表无法支持一些关系型查询和统计功能的问题;达到了借助Hive和Hadoop的分布式并行计算特性,来实现对数据库集群中多张关联的分区表的关系型查询和统计功能的效果。
[0131]本实施例提供的数据查询方法,还通过Hive中的Hive表来与数据库集群中的多张分区表进行关联,借助HQL查询语句来实现多张分区表的结构化查询,区解决了目前多张关联的分区表无法支持一些关系型查询和统计功能的问题。同时,还通过实现数据库集群(如MySQL)中的分区表至Hadoop中的输入分片的映射,使得Hadoop的MapReduce能够运行在数据库集群上查询,借助MapReduce的并行计算特性,实现了数据库集群的并行查询能力。
[0132]其中,上述步骤301至步骤304可以单独实现成为Hive侧的数据查询方法;上述步骤305至步骤308可以单独实现成为Hadoop侧的数据查询方法。
[0133]请参考图4,其示出了本发明一个实施例提供的数据查询系统的结构方框图。该数据查询系统包括数据库集群40、与数据库集群40相连的并行数据仓库工具Hive400,以及与数据库集群40和Hive400分别相连的并行计算架构Hadoop500。
[0134]所述数据库集群40,存储有关联的至少两个分区表。
[0135]并行数据仓库工具Hive400包括一数据查询装置,该数据查询装置能够通过软件、硬件或者两者的结合实现成为Hive的全部或者一部分。该数据查询装置包括:语句接收模块420、计划生成模块440、计划发送模块460和结果接收模块480。
[0136]语句接收模块420,用于获取针对所述数据库集群的HQL查询语句,所述HQL查询语句中指定的Hive表对应于所述数据库集群中关联的至少两张分区表;
[0137]计划生成模块440,用于根据所述HQL查询语句生成MapReduce执行计划;
[0138]计划发送模块460,用于将所述MapReduce执行计划发送给并行计算架构Hadoop ;
[0139]结果接收模块480,用于接收所述Hadoop反馈的查询结果,所述查询结果是所述Hadoop根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务后,通过Reduce化简任务汇总每个Mapper映射任务的查询结果得到的。
[0140]并行计算架构HadOOp500包括一数据查询装置,该数据查询装置能够通过软件、硬件或者两者的结合实现成为Hive的全部或者一部分。该数据查询装置包括:计划获取模块520、分区查询模块540、结果汇总模块560和结果反馈模块580。
[0141]计划获取模块520,用于获取MapReduce执行计划,所述MapReduce执行计划是并行数据仓库工具Hive根据针对所述数据库集群的HQL查询语句生成的,所述HQL查询语句指定的Hive表对应于所述数据库集群中关联的至少两张分区表;
[0142]分区查询模块540,用于根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务进行查询;
[0143]结果汇总模块560,用于通过Reduce化简任务汇总每个Mapper映射任务的查询结果;
[0144]结果反馈t旲块580,用于向所述Hive反馈汇总后的查询结果。
[0145]综上所述,本实施例提供的数据查询系统,通过由Hive将针对数据库集群的HQL查询语句转化为MapReduce执行计划,由Hadoop来执行该MapReduce执行计划在数据库集群的各个分区表中查询数据;解决了目前多张关联的分区表无法支持一些关系型查询和统计功能的问题;达到了借助Hive和Hadoop的分布式并行计算特性,来实现对数据库集群中多张关联的分区表的关系型查询和统计功能的效果。
[0146]请参考图5,其示出了本发明另一实施例提供的数据查询系统的结构方框图。该数据查询系统包括数据库集群40、与数据库集群40相连的并行数据仓库工具Hive400,以及与数据库集群40和Hive400分别相连的并行计算架构Hadoop500。
[0147]所述数据库集群40,存储有关联的至少两个分区表。
[0148]并行数据仓库工具Hive400包括一数据查询装置,该数据查询装置能够通过软件、硬件或者两者的结合实现成为Hive的全部或者一部分。该数据查询装置包括:语句接收模块420、计划生成模块440、计划发送模块460和结果接收模块480。
[0149]语句接收模块420,用于获取针对所述数据库集群的HQL查询语句,所述HQL查询语句中指定的Hive表对应于所述数据库集群中关联的至少两张分区表;
[0150]计划生成模块440,用于根据所述HQL查询语句生成MapReduce执行计划;
[0151]计划发送模块460,用于将所述MapReduce执行计划发送给并行计算架构Hadoop ;
[0152]结果接收模块480,用于接收所述Hadoop反馈的查询结果,所述查询结果是所述Hadoop根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务后,通过Reduce化简任务汇总每个Mapper映射任务的查询结果得到的。
[0153]可选地,所述计划生成模块440,包括:信息获取单元442和计划生成单元444 ;
[0154]所述信息获取单元442,用于获取所述HQL查询语句所指定的Hive表在所述数据库集群对应的分区描述信息;
[0155]所述计划生成单元444,用于根据所述HQL查询语句、所述Hive表和所述Hive表的分区描述信息生成所述MapReduce执行计划。
[0156]可选地,所述信息获取单元442,包括:
[0157]连接存储子单元,用于预先存储所述数据库集群的连接信息;第一获取子单元,用于根据所述连接信息从所述数据库集群获取所述分区描述信息;
[0158]或,
[0159]第二获取子单元,用于获取预先存储的所述分区描述信息。
[0160]可选地,所述计划生成单元444,包括:
[0161]条件生成子单元、格式生成子单元和计划生成子单元;
[0162]所述条件生成子单元,用于根据所述HQL查询语句确定所述数据库集群中每个分区表所对应的查询条件;
[0163]所述格式生成子单元,用于根据所述Hive表生成所述数据库集群在所述并行计算结构中的输入格式;
[0164]所述计划生成子单元,用于将所述查询条件、所述分区描述信息和所述数据库集群在所述并行计算结构中的输入格式生成为所述MapReduce执行计划的内容。
[0165]并行计算架构HadOOp500包括一数据查询装置,该数据查询装置能够通过软件、硬件或者两者的结合实现成为Hive的全部或者一部分。该数据查询装置包括:计划获取模块520、分区查询模块540、结果汇总模块560和结果反馈模块580。
[0166]计划获取模块520,用于获取MapReduce执行计划,所述MapReduce执行计划是并行数据仓库工具Hive根据针对所述数据库集群的HQL查询语句生成的,所述HQL查询语句指定的Hive表对应于所述数据库集群中关联的至少两张分区表;
[0167]分区查询模块540,用于根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务进行查询;
[0168]结果汇总模块560,用于通过Reduce化简任务汇总每个Mapper映射任务的查询结果;
[0169]结果反馈t旲块580,用于向所述Hive反馈汇总后的查询结果。
[0170]所述分区查询模块540,包括:分片生成单元542和分区查询单元544 ;
[0171]所述分片生成单元542,用于根据所述分区描述信息和所述数据库集群在所述Hadoop中的输入格式将所述数据库集群的各个分区表转换为各自对应的输入分片;
[0172]所述分区查询单元544,用于对于每个所述输入分片,启动相应的所述Mapper映射任务执行相应分区表的查询。
[0173]可选地,所述分区查询单元544,包括:语句生成子单元和分片查询子单元;
[0174]所述语句生成子单元,用于对于每个所述映射任务,根据所述Mapper映射任务所对应的分区表所对应的查询条件生成分区查询语句;
[0175]所述分片查询子单元,用于通过所述分区查询语句在所述分区表对应的输入分片中读取数据作为查询结果。
[0176]综上所述,本实施例提供的数据查询系统,通过由Hive将针对数据库集群的HQL查询语句转化为MapReduce执行计划,由Hadoop来执行该MapReduce执行计划在数据库集群的各个分区表中查询数据;解决了目前多张关联的分区表无法支持一些关系型查询和统计功能的问题;达到了借助Hive和Hadoop的分布式并行计算特性,来实现对数据库集群中多张关联的分区表的关系型查询和统计功能的效果。
[0177]本实施例提供的数据查询系统,还通过Hive中的Hive表来与数据库集群中的多张分区表进行关联,借助HQL查询语句来实现多张分区表的结构化查询,区解决了目前多张关联的分区表无法支持一些关系型查询和统计功能的问题。同时,还通过实现数据库集群(如MySQL)中的分区表至Hadoop中的输入分片的映射,使得Hadoop的MapReduce能够运行在数据库集群上查询,借助MapReduce的并行计算特性,实现了数据库集群的并行查询能力。
[0178]需要说明的是:上述实施例提供的数据查询系统在查询数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据查询系统与数据查询方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0179]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0180]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0181 ] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种数据查询方法,其特征在于,用于与数据库集群相连的并行数据仓库工具Hive中,所述方法包括: 获取针对所述数据库集群的HQL查询语句,所述HQL查询语句中指定的Hive表对应于所述数据库集群中关联的至少两张分区表; 根据所述HQL查询语句生成MapReduce执行计划; 将所述MapReduce执行计划发送给并行计算架构Hadoop ; 接收所述Hadoop反馈的查询结果,所述查询结果是所述Hadoop根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务后,通过Reduce化简任务汇总每个Mapper映射任务的查询结果得到的。
2.根据权利要求1所述的方法,其特征在于,所述根据所述HQL查询语句生成MapReduce执行计划,包括: 获取所述HQL查询语句所指定的Hive表在所述数据库集群对应的分区描述信息; 根据所述HQL查询语句、所述Hive表和所述Hive表的分区描述信息生成所述MapReduce执行计划。
3.根据权利要求2所述的方法,其特征在于,所述获取所述HQL查询语句所指定的Hive表在所述数据库集群对应的分区描述信息,包括: 预先存储所述数据库集群的连接信息;根据所述连接信息从所述数据库集群获取所述分区描述信息; 或, 获取预先存储的所述分区描述信息。
4.根据权利要求2所述的方法,其特征在于,所述根据所述HQL查询语句、所述Hive表和所述Hive表的分区描述信息生成所述MapReduce执行计划,包括: 根据所述HQL查询语句确定所述数据库集群中每个分区表所对应的查询条件; 根据所述Hive表生成所述数据库集群在所述Hadoop中的输入格式; 将所述查询条件、所述分区描述信息和所述数据库集群在所述Hadoop中的输入格式生成为所述MapReduce执行计划的内容。
5.一种数据查询方法,其特征在于,用于与数据库集群相连的并行计算架构Hadoop中,所述方法包括: 获取MapReduce执行计划,所述MapReduce执行计划是并行数据仓库工具Hive根据针对所述数据库集群的HQL查询语句生成的,所述HQL查询语句指定的Hive表对应于所述数据库集群中关联的至少两张分区表; 根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务进行查询; 通过Reduce化简任务汇总每个Mapper映射任务的查询结果; 向所述Hive反馈汇总后的查询结果。
6.根据权利要求5所述的方法,其特征在于,所述根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务,包括: 根据所述分区描述信息和所述数据库集群在所述Hadoop中的输入格式将所述数据库集群的各个分区表转换为各自对应的输入分片;对于每个所述输入分片,启动相应的所述Mapper映射任务执行相应分区表的查询。
7.根据权利要求6所述的方法,其特征在于,所述对于每个所述输入分片,启动相应的所述Mapper映射任务执行相应分区表的查询,包括: 对于每个所述映射任务,根据所述Mapper映射任务所对应的分区表所对应的查询条件生成分区查询语句; 通过所述分区查询语句在所述分区表对应的输入分片中读取数据作为查询结果。
8.一种数据查询装置,其特征在于,用于与数据库集群相连的并行数据仓库工具Hive中,所述装置包括: 语句接收模块,用于获取针对所述数据库集群的HQL查询语句,所述HQL查询语句中指定的Hive表对应于所述数据库集群中关联的至少两张分区表; 计划生成模块,用于根据所述HQL查询语句生成MapReduce执行计划; 计划发送模块,用于将所述MapReduce执行计划发送给并行计算架构Hadoop ; 结果接收模块,用于接收所述Hadoop反馈的查询结果,所述查询结果是所述Hadoop根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务后,通过Reduce化简任务汇总每个Mapper映射任务的查询结果得到的。
9.根据权利要求8所述的装置,其特征在于,所述计划生成模块,包括:信息获取单元和计划生成单元; 所述信息获取单元,用于获取所述HQL查询语句所指定的Hive表在所述数据库集群对应的分区描述信息; 所述计划生成单元,用于根据所述HQL查询语句、所述Hive表和所述Hive表的分区描述信息生成所述MapReduce执行计划。
10.根据权利要求9所述的装置,其特征在于,所述信息获取单元,包括: 连接存储子单元,用于预先存储所述数据库集群的连接信息;第一获取子单元,用于根据所述连接信息从所述数据库集群获取所述分区描述信息; 或, 第二获取子单元,用于获取预先存储的所述分区描述信息。
11.根据权利要求9所述的装置,其特征在于,所述计划生成单元,包括: 条件生成子单元、格式生成子单元和计划生成子单元; 所述条件生成子单元,用于根据所述HQL查询语句确定所述数据库集群中每个分区表所对应的查询条件; 所述格式生成子单元,用于根据所述Hive表生成所述数据库集群在所述Hadoop中的输入格式; 所述计划生成子单元,用于将所述查询条件、所述分区描述信息和所述数据库集群在所述Hadoop中的输入格式生成为所述MapReduce执行计划的内容。
12.—种数据查询装置,其特征在于,用于与数据库集群相连的并行计算架构Hadoop中,所述装置包括: 计划获取模块,用于获取MapReduce执行计划,所述MapReduce执行计划是并行数据仓库工具Hive根据针对所述数据库集群的HQL查询语句生成的,所述HQL查询语句指定的Hive表对应于所述数据库集群中关联的至少两张分区表;分区查询模块,用于根据所述MapReduce执行计划为所述数据库集群中的每个分区表启动一个Mapper映射任务进行查询; 结果汇总模块,用于通过Reduce化简任务汇总每个Mapper映射任务的查询结果; 结果反馈模块,用于向所述Hive反馈汇总后的查询结果。
13.根据权利要求12所述的装置,其特征在于,所述分区查询模块,包括: 分片生成单元和分区查询单元; 所述分片生成单元,用于根据所述分区描述信息和所述数据库集群在所述Hadoop中的输入格式将所述数据库集群的各个分区表转换为各自对应的输入分片; 所述分区查询单元,用于对于每个所述输入分片,启动相应的所述Mapper映射任务执行相应分区表的查询。
14.根据权利要求13所述的装置,其特征在于,所述分区查询单元,包括: 语句生成子单元和分片查询子单元; 所述语句生成子单元,用于对于每个所述映射任务,根据所述Mapper映射任务所对应的分区表所对应的查询条件生成分区查询语句; 所述分片查询子单元,用于通过所述分区查询语句在所述分区表对应的输入分片中读取数据作为查询结果。
15.一种数据查询系统,其特征在于,所述系统包括数据库集群、与所述数据库集群相连的并行数据仓库工具Hive,以及与所述数据库集群和所述Hive分别相连的并行计算架构 Hadoop ; 所述数据库集群,存储有关联的至少两个分区表; 所述Hive,包括如权利要求8至11任一所述的数据查询装置; 所述Hadoop,包括如权利要求12至14任一所述的数据查询装置。
【文档编号】G06F17/30GK103927331SQ201410108733
【公开日】2014年7月16日 申请日期:2014年3月21日 优先权日:2014年3月21日
【发明者】喻先兵 申请人:珠海多玩信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1