CN117216091A - 一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质 - Google Patents
一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117216091A CN117216091A CN202311191667.XA CN202311191667A CN117216091A CN 117216091 A CN117216091 A CN 117216091A CN 202311191667 A CN202311191667 A CN 202311191667A CN 117216091 A CN117216091 A CN 117216091A
- Authority
- CN
- China
- Prior art keywords
- hivesql
- query
- connection
- query statement
- optimization
- 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.)
- Pending
Links
- 238000005457 optimization Methods 0.000 title claims abstract description 116
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000013499 data model Methods 0.000 claims abstract description 52
- 238000004422 calculation algorithm Methods 0.000 claims description 46
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 238000001914 filtration Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质,可应用于大数据领域或金融领域,包括:获取第一HiveSQL查询语句,并构建第一HiveSQL查询语句的数据模型;根据数据模型对第一HiveSQL查询语句进行决策优化,并生成多重连接优化决策;根据多重连接优化决策为第一HiveSQL查询语句制定多重连接查询计划,并根据多重连接查询计划重写第一HiveSQL查询语句,以得到第二HiveSQL查询语句;通过第二HiveSQL查询语句进行数据查询,以得到查询结果。从而提高了多重连接查询的执行效率,减少了查询时间,降低了计算机资源的消耗。
Description
技术领域
本申请涉及大数据领域以及金融领域,尤其涉及一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质。
背景技术
HiveSQL是基于Hadoop生态系统的一种SQL查询工具,主要用于大数据分析和处理。在HiveSQL中,多重连接查询是用于复杂的数据分析和关联查询的常见数据查询操作。然而,由于多重连接查询涉及多个表之间的连接操作与查询,需要在不同的表之间进行大量的数据传输与匹配,容易导致查询时间过长和计算机资源的浪费,因此,如何提升多重连接查询的执行效率成为了亟需解决的问题。
发明内容
有鉴于此,本申请的主要目的在于提供一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质,以提高多重连接查询的执行效率。
在本申请第一方面的一些实现方式中,该方法包括:
获取第一HiveSQL查询语句,并构建第一HiveSQL查询语句的数据模型,第一HiveSQL查询语句指示连接的数据表为至少两张;
根据数据模型对第一HiveSQL查询语句进行决策优化,并生成多重连接优化决策;
根据多重连接优化决策为第一HiveSQL查询语句制定多重连接查询计划,并根据多重连接查询计划重写第一HiveSQL查询语句,以得到第二HiveSQL查询语句;
通过第二HiveSQL查询语句进行数据查询,以得到查询结果。
在本申请第一方面的一些实现方式中,数据模型用于指示第一HiveSQL查询语句的查询结构以及表连接关系。
在本申请第一方面的一些实现方式中,构建第一HiveSQL查询语句的数据模型,包括:
提取第一HiveSQL查询语句指示连接的数据表的表信息以及数据表之间的表连接条件;
解析第一HiveSQL查询语句指示连接的数据表的表信息以及数据表之间的表连接条件,以得到第一HiveSQL查询语句的查询结构以及表连接关系;
基于查询结构以及表连接关系构建数据模型。
在本申请第一方面的一些实现方式中,提取第一HiveSQL查询语句指示连接的数据表的表信息以及数据表之间的表连接条件,包括:
通过Antlr语言识别工具生成第一HiveSQL查询语句的抽象语法树,抽象语法树包括:表信息节点以及表连接信息节点;
通过表信息节点提取第一HiveSQL查询语句指示连接的数据表的表信息;
通过表连接信息节点提取数据表之间的表连接条件。
在本申请第一方面的一些实现方式中,多重连接优化决策包括:表连接顺序优化决策以及表连接算法优化决策。
在本申请第一方面的一些实现方式中,根据数据模型对第一HiveSQL查询语句进行决策优化,包括:
根据查询结构以及表连接关系,对第一HiveSQL查询语句进行表连接顺序优化,以得到表连接顺序优化决策;
根据表连接顺序优化决策对第一HiveSQL查询语句进行表连接算法优化,以得到表连接算法优化决策。
在本申请第一方面的一些实现方式中,根据多重连接优化决策为第一HiveSQL查询语句制定多重连接查询计划,包括:
根据表连接顺序优化决策选择第一HiveSQL查询语句的物理执行计划;
根据表连接算法优化决策修改物理执行计划,以得到多重连接查询计划。
本申请第二方面提供了一种HiveSQL多重连接查询的优化装置,该装置包括:
查询解析模块,用于获取第一HiveSQL查询语句,并构建第一HiveSQL查询语句的数据模型,第一HiveSQL查询语句指示连接的数据表为至少两张;
优化决策模块,用于根据数据模型对第一HiveSQL查询语句进行决策优化,并生成多重连接优化决策;
查询重写模块,用于根据多重连接优化决策为第一HiveSQL查询语句制定多重连接查询计划,并根据多重连接查询计划重写第一HiveSQL查询语句,以得到第二HiveSQL查询语句;
语句查询模块,通过第二HiveSQL查询语句进行数据查询,以得到查询结果。
本申请第三方面提供了一种HiveSQL多重连接查询的优化设备,其特征在于,HiveSQL多重连接查询的优化设备包括存储器和处理器,处理器用于执行存储器中存储的程序,运行如本申请第一方面所提供的任一项HiveSQL多重连接查询的优化方法。
本申请第四方面提供了一种可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本申请第一方面所提供的HiveSQL多重连接查询的优化方法的各个步骤。
相对于现有技术,本申请所提供的技术方案具有如下有益效果:
在本申请所提供的技术方案中,通过获取第一HiveSQL查询语句,并构建第一HiveSQL查询语句的数据模型,第一HiveSQL查询语句指示连接的数据表为至少两张;根据数据模型对第一HiveSQL查询语句进行决策优化,并生成多重连接优化决策;根据多重连接优化决策为第一HiveSQL查询语句制定多重连接查询计划,并根据多重连接查询计划重写第一HiveSQL查询语句,以得到第二HiveSQL查询语句;通过第二HiveSQL查询语句进行数据查询,以得到查询结果。从而提高了多重连接查询的执行效率,减少了查询时间,降低了计算机资源的消耗。
附图说明
图1为本申请实施例提供的一种HiveSQL多重连接查询的优化方法的流程示意图;
图2为本申请实施例提供的又一种HiveSQL多重连接查询的优化方法的流程示意图;
图3为本申请实施例提供的又一种HiveSQL多重连接查询的优化方法的流程示意图;
图4为本申请实施例提供的一种HiveSQL多重连接查询的优化装置的结构示意图;
图5为本申请实施例提供的一种HiveSQL多重连接查询的优化设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
正如背景技术所言,由于多重连接查询通常涉及多个表之间的连接操作,需要在不同的表之间进行大量的数据传输与匹配,容易导致查询时间过长和计算机资源的浪费。
有鉴于此,参见图1所示,本申请实施例提供了一种HiveSQL多重连接查询的优化方法,以提升HiveSQL查询语句的执行效率,具体包括以下步骤:
S101:获取第一HiveSQL查询语句,并构建第一HiveSQL查询语句的数据模型。
其中,第一HiveSQL查询语句指示连接的数据表为至少两张。
HiveSQL是一种基于Hive数据仓库的SQL语言,允许用户使用类似于结构化标准查询语言(Structured Query Language,SQL)的语法来查询Hadoop分布式文件系统的大规模数据集。在本申请中,第一HiveSQL查询语句特指未经决策优化前的原始的HiveSQL查询语句。需要说明的是,本申请中的第一HiveSQL查询语句的获取方式可以是用户输入或从其他数据源读取到的,均不影响本申请实施例的实现,此外,可以理解的是,基于本申请目的在于进行多重连接查询的优化,其中涉及到多张数据表的连接与查询,因此第一HiveSQL查询语句所指示连接的数据表为至少两张数据表。
数据模型指的是对第一HiveSQL查询语句的数据结构和关系的表示,构建数据模型的目的在于为后续的决策优化提供数据模型的输入,以便根据数据模型中的信息进行决策优化。
在本申请实施例的一些实现方式中,数据模型具体用于表示第一HiveSQL查询语句的查询结构以及表连接关系,其中,查询结构可以用来表示查询语句中涉及到的操作和顺序,如选择、投影、过滤、连接等;表连接关系可以用来表示不同数据表之间通过什么样的条件进行连接,如等值连接、非等值连接,通过查询结构以及表连接关系可以表示第一HiveSQL查询语句中涉及的表连接、表操作、过滤条件等,进而为后续针对于多重连接查询的决策优化提供准确数据。
为了便于读者理解本申请实施例所提供的技术方案,下面将结合举例对本申请实施例进行说明:
假设第一HiveSQL查询语句如下:
select t1.name,t2.salary,t3.dept from employee t1 join salary t2 ont1.id=t2.id join department t3 on t2.dept_id=t3.id where t1.age>30andt3.location='Beijing'。
可见,上述查询语句的目的是从三个数据表(员工表employee、薪资表salary、部门表department)中查询出年龄大于30的员工的姓名、薪水以及所属部门。在本申请实施例中,可以根据第一HiveSQL查询语句中涉及的表、字段、条件等信息,构建第一HiveSQL查询语句的数据模型。数据模型可以用不同的方式表示,例如图形、文本、代码等。为了方便说明,本申请实施例采用文本形式来描述数据模型,例如,上述第一HiveSQL查询语句对应的数据模型可以描述为:
查询结构:select-join-where;
表连接关系:t1.id=t2.id and t2.dept_id=t3.id;
表信息:employee(t1):包含员工的基本信息,例如工号id、员工姓名name、员工年龄age等字段;salary(t2):包含员工的薪水信息,例如工号id、薪资salary、部门编号dept_id等字段;department(t3):包含部门的信息,如工号id、部门dept、部门所处区域location等字段;
过滤条件:t1.age>30and t3.location='Beijing';
输出字段:t1.name,t2.salary,t3.dept。
S102:根据数据模型对第一HiveSQL查询语句进行决策优化,并生成多重连接优化决策。
决策优化指的是通过数据模型中描述的信息对第一HiveSQL的执行计划进行的优化,多重连接优化决策指的是优化决策的优化结果,例如,采用何种数据表或数据库的连接顺序为较优、接近最优或最优的。
在本申请实施例的一些实现方式中,为了提高多重连接查询的执行效率,具体从表连接算法以及表连接顺序这两方面进行决策优化,基于此,S102具体是根据数据模型描述的查询结构以及表连接关系对第一HiveSQL查询语句进行决策优化。相应的,进行决策优化生成的多种连接优化决策,至少包括:表连接顺序优化决策以及表连接算法优化决策。可以理解的是,表连接顺序优化决策可以指的是基于第一HiveSQL查询语句确定的优选、接近最优或最优的表连接顺序方案,表连接算法优化决策可以指的是基于第一HiveSQL查询语句确定的优选、接近最优或最优的实现数据表连接的表连接算法方案。本申请实施例将多重连接优化决策分为两个方面,即表连接顺序优化决策和表连接算法优化决策,从而可以针对不同的连接类型和条件,选择最合适的连接顺序和连接算法,提高查询效率和准确性。
需要说明的是,可以采用不同的现有方法来进行决策优化,例如基于代价模型的方法、基于启发式规则的方法、基于机器学习的方法等,均不影响本申请实施例的实现。例如,如果使用基于代价模型的方法来对表连接顺序和表连接算法进行决策优化的话,则根据不同的表连接顺序和表连接算法产生的代价,例如内存开销、网络开销等,来选择最小代价的方案。
S103:根据多重连接优化决策为第一HiveSQL查询语句制定多重连接查询计划,并根据多重连接查询计划重写第一HiveSQL查询语句,以得到第二HiveSQL查询语句。
本申请中的多重连接查询计划可以是指根据多重连接优化决策为第一HiveSQL查询语句制定的执行计划,例如,采用何种表连接的顺序可以减少中间结果集的产生,进行表连接时采用何种表连接算法可以降低时延等。本申请中的第二HiveSQL查询语句特指根据多重连接查询计划重写第一HiveSQL查询语句得到的HiveSQL查询语句。
本申请中的多重连接查询计划的作用可以理解为向第一HiveSQL查询语句提供优化的执行计划,从而提高执行第一HiveSQL查询语句的执行效率,因此,为了实现多重连接查询计划应用在第一HiveSQL查询语句上所能带来的技术效果,需要根据多重连接查询计划对第一HiveSQL查询语句进行语句的重写或修改。因此可以理解的是,S103作用在于基于多重连接查询计划对第一HiveSQL查询语句进行语法上的适应性修改,由此得到一个具有更高的执行效率的第二HiveSQL查询语句。
沿用S101中的举例进行说明,以表连接顺序的决策优化为例,第一HiveSQL查询语句中涉及表连接顺序的语句如下:
from employee t1 join salary t2 on t1.id=t2.id join department t3 ont2.dept_id=t3.id;
通过S103可以实现例如以下效果,假设多重连接查询计划指示优先进行employee表以及department的连接为最优方案,则可以将HiveSQL查询语句中涉及表连接顺序的语句修改为:
from(employee t1 join department t3 ont1.id=t3.id)join salary t2 ont1.id=t2.id。
S104:通过第二HiveSQL查询语句进行数据查询,以得到查询结果。
查询结果可以指执行第二HiveSQL查询语句后,数据库返回的执行结果。在本申请的实施例中,数据查询的实现方式具体是将第二HiveSQL查询语句发送至执行引擎,以使执行引擎执行第二HiveSQL查询语句,从数据库中查询得到查询结果。通过使用执行引擎来执行经过优化后的第二HiveSQL查询语句,从数据库中获取查询结果,从而实现了满足不同查询的查询需求。需要说明的是,该执行引擎可以是Hive执行引擎,也可以是其他能够执行HiveSQL查询语句的执行引擎,均不影响本申请实施例的实现。
在图1所示流程中,通过获取第一HiveSQL查询语句,并构建第一HiveSQL查询语句的数据模型;根据数据模型对第一HiveSQL查询语句进行决策优化,并生成多重连接优化决策;根据多重连接优化决策为第一HiveSQL查询语句制定多重连接查询计划,并根据多重连接查询计划重写第一HiveSQL查询语句,以得到第二HiveSQL查询语句;通过第二HiveSQL查询语句进行数据查询,以得到查询结果。通过为第一HiveSQL查询语句制定多重连接查询计划,基于多重连接查询计划重写第一HiveSQL查询语句,从而提高了多重连接查询的执行效率,减少了查询时间,降低了计算机资源的消耗。
参见图2所示,图2为本申请实施例提供的又一种HiveSQL多重连接查询的优化方法,具体包括以下步骤:
S201:获取第一HiveSQL查询语句。
在本申请实施例中,S201的具体实施方式与S101相同,本申请在此方面不再赘述。
S202:提取第一HiveSQL查询语句指示连接的数据表的表信息以及数据表之间的表连接条件。
其中,第一HiveSQL查询语句指示连接的数据表的表信息,可以包括数据表的表名、字段名等,数据表之间的连接条件指的是数据表中预先建立的关联条件,例如连接类型、连接键、连接操作符等。根据第一HiveSQL查询语句中的语法结构和关键字,可以提取出第一HiveSQL查询语句指示连接的数据表的表信息以及数据表之间的表连接条件。
沿用S101中的举例进行说明,例如,对于第一HiveSQL查询语句,可以提取出以下信息:
表信息:
employee(t1):包含员工的基本信息,例如工号id、员工姓名name、员工年龄age等字段;
salary(t2):包含员工的薪水信息,例如工号id、薪资salary、部门编号dept_id等字段;
department(t3):包含部门的信息,如工号id、部门dept、部门所处区域location等字段。
表连接条件:
t1 join t2 on t1.id=t2.id:表示将employee表(t1)和salary表(t2)按照id字段进行匹配;
t2 join t3 on t2.dept_id=t3.id:表示将salary表(t2)和department表(t3)按照dept_id和id字段进行匹配。
S203:解析第一HiveSQL查询语句指示连接的数据表的表信息以及数据表之间的表连接条件,以得到第一HiveSQL查询语句的查询结构以及表连接关系。
在本申请实施例中,根据前一步骤中提取出的表信息和表连接条件,解析出第一HiveSQL查询语句的查询结构以及表连接关系。
在本申请实施例中,查询结构可以用来表示查询语句中涉及到的操作和顺序,如选择、投影、过滤、连接等;表连接关系可以用来表示不同数据表之间通过什么样的条件进行连接,如等值连接、非等值连接等。
沿用上述举例进行说明,对于上述第一HiveSQL查询语句,可以解析出以下信息:
查询结构:select-project-filter-join;
表连接关系:t1.id=t2.id and t2.dept_id=t3.id。
S204:基于查询结构以及表连接关系构建数据模型。
在本申请实施例中,通过解析出的查询结构以及表连接关系,可以构建出第一HiveSQL查询语句的数据模型,该数据模型用于为后续的决策优化提供数据模型的输入,以便根据数据模型中的信息进行表连接顺序和表连接算法的决策优化。
本申请中基于查询结构以及表连接关系构建的数据模型可以用来指示第一HiveSQL查询语句的查询逻辑以及表连接逻辑,其也可以理解为用来指示第一HiveSQL查询语句的逻辑执行计划,例如第一HiveSQL查询语句采用了何种顺序进行数据表的连接,采用何种条件进行数据的过滤。
本申请可以采用文本形式来描述数据模型,例如,上述第一HiveSQL查询语句对应的数据模型可以描述为:
查询逻辑:select t1.name,t2.salary,t3.dept from R where t1.age>30andt3.location='Beijing';
表连接逻辑:R=t1 join t2join t3 on t1.id=t2.id and t2.dept_id=t3.id。
S205:根据数据模型中查询结构以及表连接关系,对第一HiveSQL查询语句进行表连接顺序优化,以得到表连接顺序优化决策。
本申请中的表连接顺序优化是指在不改变查询结果的前提下,调整不同数据表之间的连接顺序,以减少中间结果的大小和数量,从而提高执行效率。表连接顺序优化决策是指在所有可能的表连接顺序中选择最优或近似最优的一种作为最终执行的顺序。
表连接顺序优化是对第一HiveSQL查询语句的逻辑执行计划进行的优化,例如通过多路join技术,根据数据表大小、表连接条件、过滤条件等因此,动态地决定最优的表连接顺序,从而减少中间结果集的大小。
S206:根据表连接顺序优化决策对第一HiveSQL查询语句进行表连接算法优化,以得到表连接算法优化决策。
本申请中的表连接算法优化是指在不改变查询结果的前提下,选择合适的表连接算法,以减少查询执行所需的资源消耗,从而提高查询效率。表连接算法优化决策是指在所有可能的表连接算法中选择优选、最优或近似最优的一种作为最终执行的表连接算法。
例如,假设表连接顺序优化决策指示先连接department表和employee表,可以减少中间结果的大小和传输开销,通过分析发现department和employee之间有一个等值连接条件t1.id=t3.id,使用哈希连接算法可以快速匹配两个数据表中相同键值的记录。因此在后续执行查询时,使用哈希连接算法进行表连接是优选的连接方式。
S207:根据表连接顺序优化决策选择第一HiveSQL查询语句的物理执行计划。
在本申请实施例中,物理执行计划可以是表示查询中涉及的表、操作、条件等元素之间的具体实现方式的执行计划。本申请中物理执行计划是根据优化后的表连接顺序以及第一HiveSQL查询语句涉及的数据表、操作、条件等进行确定的,用以初步确定第一HiveSQL查询语句执行查询时所需的执行步骤。
S208:根据表连接算法优化决策修改物理执行计划,以得到多重连接查询计划。
在本申请实施例中,在S207中最终确定了执行查询的表连接顺序,本申请需要基于表连接算法优化决策,进一步修改物理执行计划以得到最终执行查询的表连接算法,即多种连接查询计划。需要说明的是,如果表连接算法优化决策所指示采用的表连接算法与物理执行计划中的表连接算法相同,则可以直接确定物理执行计划为多重连接查询计划。
在本申请实施例中,多重连接查询计划指的是第一HiveSQL查询语句执行查询时最终确定的执行计划,与物理执行计划的区别在于,物理执行计划中表连接操作还处于抽象的状态,而多重连接查询计划中的表连接操作已经被具体化为相应的表连接算法。例如,表连接算法优化决策指示采用的表连接算法,对物理执行计划中的表连接操作符进行具体化,以便更好地适应不同的数据表或数据库的数据分布,进一步提高查询语句的执行效率。
S209:根据多重连接查询计划重写第一HiveSQL查询语句,以得到第二HiveSQL查询语句。
在本申请实施例中,S209的具体实施方式与S103相同,本申请在此不做赘述。
S210:通过第二HiveSQL查询语句进行数据查询,以得到查询结果。
在本申请实施例中,S210的具体实施方式与S104相同,本申请在此不做赘述。
在图2所示流程中,首先,通过提取第一HiveSQL查询语句指示连接的数据表的表信息以及数据表之间的表连接条件,解析得到第一HiveSQL的查询结构以及表连接关系,进而构建数据模型;实现了对第一HiveSQL查询语句中指示连接的数据表的表信息以及数据表之间的表连接条件的有效获取和分析,该数据模型可以为后续的决策优化提供准确数据。
然后,通过根据数据模型中的查询结构以及表连接关系,对第一HiveSQL查询语句进行表连接顺序优化,得到表连接顺序优化决策;再进一步根据表连接顺序优化决策进行表连接算法优化得到表连接算法优化决策,实现了为第一HiveSQL查询语句生成包括表连接顺序优化决策以及表连接算法优化决策在内的多重连接优化决策,对第一HiveSQL查询语句中的表连接操作进行逻辑层面的优化,确定最佳的连接顺序和连接算法,以调整不同数据表之间的连接顺序减少中间结果的大小和数量,以及减少查询执行所需的资源消耗,从而提高查询效率。
最后,根据表连接顺序优化决策选择第一HiveSQL查询语句的物理执行计划,根据表连接算法优化决策修改物理执行计划,以得到多重连接查询计划。实现将逻辑执行计划转化为物理执行计划,并根据不同的连接算法进行相应的修改,生成多重连接查询计划,使第一HiveSQL查询语句更适合分布式查询处理机制。
参见图3所示,图3为本申请实施例提供的又一种HiveSQL多重连接查询的优化方法,在图2所示流程的基础上,S204具体包括以下步骤:
S301:通过Antlr语言识别工具生成第一HiveSQL查询语句的抽象语法树,抽象语法树包括:表信息节点以及表连接信息节点。
Antlr是一种开源的语言识别工具,在本申请实施例中可以对第一HiveSQL查询语句进行词法分析和语法分析,以生成第一HiveSQL查询语句的抽象语法树(AbstractSyntax Tree,AST),抽象语法树是一种使用多个节点来表示查询语句中涉及的表、操作、条件等元素之间的层次结构和关系的树形结构,该多个节点可以包括:表信息节点以及表连接节点。表信息节点指的是抽象语法树中与第一HiveSQL查询语句指示连接的数据表的表信息相关的节点,表连接节点指的是抽象语法树与各数据表连接关系相关的节点。
假设第一HiveSQL查询语句如下:
select t1.name,t2.salary,t3.dept from employee t1 join salary t2 ont1.id=t2.id join department t3 on t2.dept_id=t3.id where t1.age>30andt3.location='Beijing'。
通过Antlr定义的结构化查询语句SQL的语法规则,对第一HiveSQL查询语句进行词法以及语法解析,转化抽象语法树AST Tree,该抽象语法树包括以下节点:
TOK_QUERY:表示查询语句,包含了第一HiveSQL查询语句中的所有元素;
TOK_FROM:表示查询的输入集,包含了第一HiveSQL查询语句中指定的数据表和连接方式。
TOK_TABREF:表示数据表的引用,包含了数据表的表名和别名;
TOK_TABNAME:表示数据表的名称,例如department、salary、employee。
TOK_INSERT:表示查询的输出目标,例如查询结果的输出位置或输出目标;
TOK_DESTINATION:表示输出目标是一个临时文件,例如表示查询结果将被存储为临时文件;
TOK_DIR:表示输出目标是目录,例如表示临时文件将被存储在哪个目录中;
TOK_TMP_FILE:表示临时文件的名称;
TOK_SELECT:表示查询的计算过程,包含了第一HiveSQL查询语句中指定的选择、过滤等操作;
TOK_SELEXPR:表示选择表达式,即要输出的列或表达式,例如t1.name,t2.salary,t3.dept;
TOK_ALLCOLREF:表示选择所有列,即查询语句中的“*”符号,需要说明的是,“*”符号在上述举例的第一HiveSQL查询语句中并未出现;
TOK_WHERE:表示过滤条件,例如t1.age>30and t3.location='Beijing'。
TOK_TABLE_OR_COL:表示段名、字段名以及字段值,例如t1.age、30、t3.location、Beijing。
其中,TOK_TABNAME、TOK_TABREF、TOK_TABLE_OR_COL可以看作表信息节点。TOK_WHERE可以看作表连接信息节点。
S302:通过表信息节点提取第一HiveSQL查询语句指示连接的数据表的表信息。
在本申请实施例中,根据抽象语法树中的表信息节点可以提取第一HiveSQL查询语句指示连接的数据表的表信息,例如数据表的名称、别名、字段、类型等属性。
具体地提取方式,可以是通过遍历抽象语法树中的所有节点以匹配表信息节点,提取表信息节点中对应的值,并存储在一个数据结构中,例如哈希表等。
沿用S301中举例的抽象语法树进行说明,从抽象语法树中的表信息节点可以提取出的表信息如下:
数据表employee,别名t1,字段包括:id,name,gender,类型分别为int,string,string;
数据表salary,别名t2,字段包括:dept_id,name,age,类型分别为int,string,int;
数据表department,别名t3,字段包括:id,name,salary,类型分别为int,string,int。
S303:通过表连接信息节点提取数据表之间的表连接条件。
在本申请实施例中,根据抽象语法树中的表连接信息节点可以提取数据表之间的表连接条件,该表连接条件是指数据表之间进行连接操作所需满足的约束条件,例如等值连接、非等值连接、内连接、外连接等。
具体可以采用与表信息相同的提取方式,例如可以是遍历抽象语法树中的所有节点以匹配表连接信息节点,并提取表连接信息节点中的值进行存储。
沿用S301中的举例进行说明,从抽象语法树中的表连接信息节点可以提取出的表连接信息如下:
t1和t2进行内连接,连接条件为t1.id=t2.id;
t2和t3进行内连接,连接条件为t2.dept_id=t3.id;
连接后的结果需要满足过滤条件t1.age>30and t3.location='Beijing'。
在图3所示流程中,通过使用Antlr语言识别工具生成抽象语法树,并从中匹配和提取表示表信息和表连接信息的节点,实现了对第一HiveSQL查询语句中指示连接的数据表的表信息以及数据表之间的表连接条件的准确提取。
参见图4,本申请实施例还提供了一种HiveSQL多重连接查询的优化装置,具体包括:
查询解析模块401,用于获取第一HiveSQL查询语句,并构建第一HiveSQL查询语句的数据模型;
优化决策模块402,用于根据数据模型对第一HiveSQL查询语句进行决策优化,并生成多重连接优化决策;
查询重写模块403,用于根据多重连接优化决策为第一HiveSQL查询语句制定多重连接查询计划,并根据多重连接查询计划重写第一HiveSQL查询语句,以得到第二HiveSQL查询语句;
语句查询模块404,通过第二HiveSQL查询语句进行数据查询,以得到查询结果。
在本申请实施例的一些实现方式中,数据模型用于指示第一HiveSQL查询语句的查询结构以及表连接关系。
在本申请实施例的一些实现方式中,构建第一HiveSQL查询语句的数据模型,包括:
提取第一HiveSQL查询语句指示连接的数据表的表信息以及数据表之间的表连接条件;
解析第一HiveSQL查询语句指示连接的数据表的表信息以及数据表之间的表连接条件,以得到第一HiveSQL查询语句的查询结构以及表连接关系;
基于查询结构以及表连接关系构建数据模型。
在本申请实施例的一些实现方式中,提取第一HiveSQL查询语句指示连接的数据表的表信息以及数据表之间的表连接条件,包括:
通过Antlr语言识别工具生成第一HiveSQL查询语句的抽象语法树,抽象语法树包括:表信息节点以及表连接信息节点;
通过表信息节点提取第一HiveSQL查询语句指示连接的数据表的表信息;
通过表连接信息节点提取数据表之间的表连接条件。
在本申请实施例的一些实现方式中,多重连接优化决策包括:表连接顺序优化决策以及表连接算法优化决策。
在本申请实施例的一些实现方式中,根据数据模型对第一HiveSQL查询语句进行决策优化,包括:
根据查询结构以及表连接关系,对第一HiveSQL查询语句进行表连接顺序优化,以得到表连接顺序优化决策;
根据表连接顺序优化决策对第一HiveSQL查询语句进行表连接算法优化,以得到表连接算法优化决策。
在本申请实施例的一些实现方式中,根据多重连接优化决策为第一HiveSQL查询语句制定多重连接查询计划,包括:
根据表连接顺序优化决策选择第一HiveSQL查询语句的物理执行计划;
根据表连接算法优化决策修改物理执行计划,以得到多重连接查询计划。
如图5所示,本申请实施例还提供了一种HiveSQL多重连接查询的优化设备,包括:存储器501、处理器502;
其中,存储器501用于存储程序;
处理器502用于执行存储器中的程序,以实现上述如图1至图3中描述的一种HiveSQL多重连接查询的优化方法。
本申请实施例还提供了一种可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现上述如图1至图3中描述的一种HiveSQL多重连接查询的优化方法的各个步骤。
本申请实施例提供的一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质可应用于大数据领域以及金融领域,需要说明的是,上述仅为示例,并不对本申请提供的一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质的应用领域进行限定。
可以理解的是,本实施例示意的结构并不构成对该装置的具体限定。在另一些实施例中,该装置可以包括比图示更多或更少的部件,或者组合另一些部件,或者拆分另一些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
最后,还需要说明的是,在本申请实施例中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种HiveSQL多重连接查询的优化方法,其特征在于,所述方法包括:
获取第一HiveSQL查询语句,并构建所述第一HiveSQL查询语句的数据模型,所述第一HiveSQL查询语句指示连接的数据表为至少两张;
根据所述数据模型对所述第一HiveSQL查询语句进行决策优化,并生成多重连接优化决策;
根据所述多重连接优化决策为所述第一HiveSQL查询语句制定多重连接查询计划,并根据所述多重连接查询计划重写所述第一HiveSQL查询语句,以得到第二HiveSQL查询语句;
通过所述第二HiveSQL查询语句进行数据查询,以得到查询结果。
2.根据权利要求1所述的方法,其特征在于,所述数据模型用于指示所述第一HiveSQL查询语句的查询结构以及表连接关系。
3.根据权利要求2所述的方法,其特征在于,所述构建所述第一HiveSQL查询语句的数据模型,包括:
提取所述第一HiveSQL查询语句指示连接的数据表的表信息以及数据表之间的表连接条件;
解析所述第一HiveSQL查询语句指示连接的所述数据表的表信息以及所述数据表之间的表连接条件,以得到所述第一HiveSQL查询语句的查询结构以及表连接关系;
基于所述查询结构以及所述表连接关系构建所述数据模型。
4.根据权利要求3所述的方法,其特征在于,所述提取所述第一HiveSQL查询语句指示连接的数据表的表信息以及数据表之间的表连接条件,包括:
通过Antlr语言识别工具生成所述第一HiveSQL查询语句的抽象语法树,所述抽象语法树包括:表信息节点以及表连接信息节点;
通过所述表信息节点提取所述第一HiveSQL查询语句指示连接的数据表的表信息;
通过所述表连接信息节点提取所述数据表之间的表连接条件。
5.根据权利要求2所述的方法,其特征在于,所述多重连接优化决策包括:表连接顺序优化决策以及表连接算法优化决策。
6.根据权利要求5所述的方法,其特征在于,所述根据所述数据模型对所述第一HiveSQL查询语句进行决策优化,包括:
根据所述查询结构以及所述表连接关系,对所述第一HiveSQL查询语句进行表连接顺序优化,以得到所述表连接顺序优化决策;
根据所述表连接顺序优化决策对所述第一HiveSQL查询语句进行表连接算法优化,以得到所述表连接算法优化决策。
7.根据权利要求5所述的方法,其特征在于,所述根据所述多重连接优化决策为所述第一HiveSQL查询语句制定多重连接查询计划,包括:
根据所述表连接顺序优化决策选择所述第一HiveSQL查询语句的物理执行计划;
根据所述表连接算法优化决策修改所述物理执行计划,以得到所述多重连接查询计划。
8.一种HiveSQL多重连接查询的优化装置,其特征在于,所述装置包括:
查询解析模块,用于获取第一HiveSQL查询语句,并构建所述第一HiveSQL查询语句的数据模型,所述第一HiveSQL查询语句指示连接的数据表为至少两张;
优化决策模块,用于根据所述数据模型对所述第一HiveSQL查询语句进行决策优化,并生成多重连接优化决策;
查询重写模块,用于根据所述多重连接优化决策为所述第一HiveSQL查询语句制定多重连接查询计划,并根据所述多重连接查询计划重写所述第一HiveSQL查询语句,以得到第二HiveSQL查询语句;
语句查询模块,通过所述第二HiveSQL查询语句进行数据查询,以得到查询结果。
9.一种HiveSQL多重连接查询的优化设备,其特征在于,所述HiveSQL多重连接查询的优化设备包括存储器和处理器,所述处理器用于执行所述存储器中存储的程序,运行如权利要求1至7任一项所述的HiveSQL多重连接查询的优化方法。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1至7中任一项所述的HiveSQL多重连接查询的优化方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311191667.XA CN117216091A (zh) | 2023-09-15 | 2023-09-15 | 一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311191667.XA CN117216091A (zh) | 2023-09-15 | 2023-09-15 | 一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117216091A true CN117216091A (zh) | 2023-12-12 |
Family
ID=89047591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311191667.XA Pending CN117216091A (zh) | 2023-09-15 | 2023-09-15 | 一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117216091A (zh) |
-
2023
- 2023-09-15 CN CN202311191667.XA patent/CN117216091A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Simitsis et al. | Optimizing ETL processes in data warehouses | |
Simitsis et al. | State-space optimization of ETL workflows | |
US7680862B2 (en) | Rewriting table functions as SQL strings | |
US8719250B2 (en) | Integrating RDF data into a relational database system | |
US10762087B2 (en) | Database search | |
CN104123288B (zh) | 一种数据查询方法及装置 | |
CN107515887B (zh) | 一种适用于多种大数据管理系统的交互式查询方法 | |
US20140101130A1 (en) | Join type for optimizing database queries | |
US8554760B2 (en) | System and method for optimizing queries | |
CN110019314B (zh) | 基于数据项分析的动态数据封装方法、客户端和服务端 | |
CN101055566B (zh) | 一种电子数据表的函数收集方法和装置 | |
US20130060753A1 (en) | Optimization Method And Apparatus | |
CN114625748A (zh) | Sql查询语句的生成方法、装置、电子设备及可读存储介质 | |
CN107818181A (zh) | 基于Plcient交互式引擎的索引方法及其系统 | |
EP3480693A1 (en) | Distributed computing framework and distributed computing method | |
US10521431B2 (en) | Relational conversion of multiprovider operations in a calculation scenario for executing a query | |
CN110990423A (zh) | Sql语句的执行方法、装置、设备和存储介质 | |
RU2605387C2 (ru) | Способ и система для хранения данных графов | |
CN113221528B (zh) | 基于openEHR模型的临床数据质量评估规则的自动生成与执行方法 | |
CN117216091A (zh) | 一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质 | |
CN114090627B (zh) | 一种数据查询方法及装置 | |
Marotta et al. | Managing source schema evolution in web warehouses | |
Simitsis et al. | Logical optimization of ETL workflows | |
Benhamed et al. | Classification of knowledge processing by MapReduce | |
CN114418101B (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 |