CN116303372A - 一种基于Hive的前置知识库优化方法 - Google Patents

一种基于Hive的前置知识库优化方法 Download PDF

Info

Publication number
CN116303372A
CN116303372A CN202310564496.4A CN202310564496A CN116303372A CN 116303372 A CN116303372 A CN 116303372A CN 202310564496 A CN202310564496 A CN 202310564496A CN 116303372 A CN116303372 A CN 116303372A
Authority
CN
China
Prior art keywords
sql
hive
strategy
knowledge base
library
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.)
Granted
Application number
CN202310564496.4A
Other languages
English (en)
Other versions
CN116303372B (zh
Inventor
李克学
张婉蒙
叶迎春
陈刚
王恒军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Future Network Research Institute Industrial Internet Innovation Application Base Of Zijinshan Laboratory
Original Assignee
Shandong Future Network Research Institute Industrial Internet Innovation Application Base Of Zijinshan Laboratory
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Future Network Research Institute Industrial Internet Innovation Application Base Of Zijinshan Laboratory filed Critical Shandong Future Network Research Institute Industrial Internet Innovation Application Base Of Zijinshan Laboratory
Priority to CN202310564496.4A priority Critical patent/CN116303372B/zh
Publication of CN116303372A publication Critical patent/CN116303372A/zh
Application granted granted Critical
Publication of CN116303372B publication Critical patent/CN116303372B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种基于Hive的前置知识库优化方法,属于数据库、大数据技术领域。预先在编译之前介入对Hive SQL的优化,解析SQL中的运算集合,从策略库中匹配满足运算集合的优化策略,所述前置知识库包括SQL解析器和策略库,所述SQL解析器对Hive SQL进行运算逻辑和表属性解析;所述策略库将SQL解析器解析的运算集合通过策略库的规则算法,生成set参数策略;将生成的set参数策略与Hive交互,设置在SQL之前,实现前置优化。与现有技术相比,通过解析运算逻辑,提前将优化策略生成到引擎中,前置知识库可以提升引擎与业务交互,提高业务对底层引擎的感知,同时提升了运算性能。

Description

一种基于Hive的前置知识库优化方法
技术领域
本发明涉及一种基于Hive的前置知识库优化方法,属于数据库、大数据技术领域。
背景技术
在大规模使用的Hive计算引擎中,数据运算往往经过去重处理、分组处理、连接处理、条件处理,求和处理等一种或者多种的组合逐步实现运算过程。在此场景下,使用Hive自带的CBO优化器(基于代价的优化器Cost Based Optimization)对运算进行优化,在编译阶段,CBO根据查询条件与使用的表,对运算中具有join(连接查询)的步骤调整运算顺序,减少中间数据量来达到优化目的。
现有的Hive CBO技术主要有三个缺点: 一,在处理join性能上有其优势,但未对各种运算逻辑(group,join,distinct,union等组合)全方位优化;二,对数据模型(Hive表)感知度不高,优化粒度是在已存在模型(Hive表)的粒度,进而对模型之上的运算进行优化,然而对于模型自身设计是否合理、模型属性是否匹配等模型级别的粒度CBO有其缺陷;三,CBO偏向于后置优化,未能做到动态优化,对于需要提前优化的运算,往往需要专业人员手动干预,根据理论与经验,进行大量的参数调优后,才能释放性能。
发明内容
本发明目的是提供了一种基于Hive的前置知识库优化方法,提高Hive引擎对业务的感知度。
本发明为实现上述目的,通过以下技术方案实现:
将Hive SQL输入到前置知识库,得到Hive SQL优化策略;所述前置知识库包括SQL解析器和策略库,所述SQL解析器对Hive SQL进行运算逻辑和表属性解析;所述运算逻辑解析包括解析逻辑运算的频次与深度,所述表属性解析包括解析表大小、字段数、小文件数;所述策略库将SQL解析器解析的运算集合通过策略库的规则算法,生成set参数策略;将生成的set参数策略与Hive交互,设置在SQL之前,实现前置优化。
优选的,所述SQL解析器对Hive SQL进行解析包括:
预处理获取的标准SQL,对运算及其子运算以一个完整的select为单位进行切割,并解析每个select的运算逻辑;定义HiveSQL语法树的解析结构,所述解析结构为运算和子运算中使用的逻辑操作拼装成的树状结构;对SQL编号并解析,将解析后的语法树做缓存处理,提高语法解析程序性能;将解析到的语法树作为输入参数输入到算法中处理生成运算集合;通过解析后的表属性按照表名到物理表实际获取的其他属性,从Hive数据库中取到真实值,对模型本身的表属性填充,将解析结果以标准数据格式输入策略库。
优选的,所述将解析后的语法树做缓存处理采用Redis缓存技术,其中Key为SQL编号,Value为具体的语法树结构,以文本形式存入缓存。
优选的,所述算法包括以下两种方式:根据运算和子运算中使用的具体操作出现的频次高低生成到运算集合,或根据语法树深度,按照语法树中深度大小生成到运算集合。
优选的,所述策略库包括规则库、模型策略表和set策略表,所述规则库包括规则表和计算公式表。
优选的,所述策略库生成set参数策略具体方式如下:
SQL解析器的解析结果输入到策略库,将逻辑运算频次和深度与规则库表中的规则和计算公式表中的计算公式匹配;将表的属性参数输入到公式计算,将匹配到的规则与表属性对具体的set数值进行计算,生成最终的set策略。
本发明的优点在于:本发明通过结合CBO,在其后置特性基础上,增加前置知识库优化方法,解决了上述缺陷,将运算(Hive SQL)作为输入参数,对Hive SQL进行解析,解析后的运算集合经过策略库匹配到合适的优化策略,提高Hive引擎对业务的感知度。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。
图1为本发明流程结构示意图。
图2为本发明语法树结构示意图。
图3为本发明Hive SQL与SQL解析器流程结构示意图。
图4为本发明SQL解析器与策略库流程结构示意图。
图5为本发明策略库规则生成set策略流程图。
图6为本发明set策略匹配与计算流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前用户生产环境对Hive的使用趋向大规模化与核心化,重点业务的运算依赖于Hive引擎的计算能力。对Hive的优化逐渐成为保障支撑的重要部分,不同于CBO在Hive SQL编译阶段的优化,本方案设计一种前置知识库,预先在编译之前介入对Hive SQL的优化,解析SQL中的运算集合,从策略库中匹配满足运算集合的优化策略,同时给出对模型粒度的优化策略。所述前置知识库包括SQL解析器和策略库,以Hive SQL作为输入,通过算法得到优化策略作为输出。
SQL解析器:负责解析Hive SQL,解析器解析内容包括:运算逻辑与表属性。解析其中的运算逻辑包括group,join,distinct,hive函数等,同时解析模型属性,包括表的字段数量、表属性、表的小文件数、表的业务属性(日表、月表、年表)、表的大小等。
策略库组件:将SQL解析器解析的运算集合作为输入,通过策略库的规则算法,生成优化参数。
针对图1中本发明涉及到的三个流程的具体说明如下:
实施例1
将Hive SQL输入到前置知识库,得到Hive SQL优化策略;所述前置知识库包括SQL解析器和策略库,所述SQL解析器对Hive SQL进行运算逻辑和表属性解析;所述运算逻辑解析包括解析逻辑运算的频次与深度,所述表属性解析包括解析表大小、字段数、小文件数;所述策略库将SQL解析器解析的运算集合通过策略库的规则算法,生成set参数策略,所述策略库包括规则库、模型策略表和set策略表,所述规则库包括规则表和计算公式表。
所述SQL解析器对Hive SQL进行解析包括:
预处理获取的标准SQL,预处理包括对SQL标准化,去除多余换行、大小写处理、尾部结束符处理、去除连续空格等操作;对运算及其子运算以一个完整的select为单位进行切割,并解析每个select的运算逻辑。
定义HiveSQL语法树的解析结构,所述解析结构为运算和子运算中使用的group、join、函数等逻辑操作拼装成的树状结构;Hive SQL一般以*.sql或*.txt方式传入SQL语法树解析模块,语法树结构中运算与子运算嵌套关系。通过定义一种树状结构,将SQL中的运算合理的结合与封装,为策略库提供关键步骤。
对SQL编号并解析,将解析后的语法树做缓存处理,提高语法解析程序性能;所述将解析后的语法树做缓存处理采用Redis缓存技术,其中Key为SQL编号,Value为具体的语法树结构,以文本形式存入缓存。
将解析到的语法树作为输入参数输入到算法中处理生成运算集合;所述算法包括以下两种方式:根据运算和子运算中使用的具体操作出现的频次高低生成到运算集合,或根据语法树深度,按照语法树中深度大小生成到运算集合。
通过解析后的表属性按照表名到物理表实际获取的其他属性,从Hive数据库中取到真实值,对模型本身的表属性填充,将解析结果以标准数据格式输入策略库。所述标准数据格式包括JSON,XML,TXT等。
所述策略库生成set参数策略具体方式如下:
SQL解析器的解析结果输入到策略库,将逻辑运算频次和深度与规则库表中的规则和计算公式表中的计算公式匹配。
将表的属性参数输入到公式计算,将匹配到的规则与表属性对具体的set数值进行计算,生成最终的set策略。
实施例2
将Hive SQL输入到前置知识库,得到Hive SQL优化策略;所述前置知识库包括SQL解析器和策略库,所述SQL解析器对Hive SQL进行运算逻辑和表属性解析;所述运算逻辑解析包括解析逻辑运算的频次与深度,所述表属性解析包括解析表大小、字段数、小文件数;所述策略库将SQL解析器解析的运算集合通过策略库的规则算法,生成set参数策略,具体步骤如下:
步骤1:是将逻辑运算频次和深度作为输入,输入到匹配规则步骤中,匹配规则表中的规则,规则匹配会取出规则表中具体存储的规则,如图6所示的hive.merge.smallfiles.avgsize。
步骤2:匹配到公式表中的公式。
步骤3:将表的属性参数作为输入,输入到公式计算中。
步骤4:同时将匹配到的规则与表属性对具体的set数值进行计算,生成最终的hive.merge.smallfiles.avgsize=256000000,其中256000000是步骤1、2、3完成的结果,也代表着本次set策略生成完成。
其中Group公式中计算hive.merge.smallfiles.avgsize的公式为:
hive.merge.smallfiles.avgsize=fileSize/tableSize^(log(count)(depth))*256MB/columnNum。
其中:fileSize表示文件数,tableSize表示表大小,columnNum表示字段数,count表示逻辑运算符频次,depth表示逻辑运算符深度。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于Hive的前置知识库优化方法,其特征在于,所述方法包括:
将Hive SQL输入到前置知识库,得到Hive SQL优化策略;所述前置知识库包括SQL解析器和策略库,所述SQL解析器对Hive SQL进行运算逻辑和表属性解析;所述运算逻辑解析包括解析逻辑运算的频次与深度,所述表属性解析包括解析表大小、字段数、小文件数;所述策略库将SQL解析器解析的运算集合通过策略库的规则算法,生成set参数策略;
将生成的set参数策略与Hive交互,设置在SQL之前,实现前置优化。
2.根据权利要求1所述的基于Hive的前置知识库优化方法,其特征在于,所述SQL解析器对Hive SQL进行解析包括:
预处理获取的标准SQL,对运算及其子运算以一个完整的select为单位进行切割,并解析每个select的运算逻辑;
定义HiveSQL语法树的解析结构,所述解析结构为运算和子运算中使用的逻辑操作拼装成的树状结构;
对SQL编号并解析,将解析后的语法树做缓存处理,提高语法解析程序性能;
将解析到的语法树作为输入参数输入到算法中处理生成运算集合;
通过解析后的表属性按照表名到物理表实际获取的其他属性,从Hive数据库中取到真实值,对模型本身的表属性填充,将解析结果以标准数据格式输入策略库。
3.根据权利要求2所述的基于Hive的前置知识库优化方法,其特征在于,所述将解析后的语法树做缓存处理采用Redis缓存技术,其中Key为SQL编号,Value为具体的语法树结构,以文本形式存入缓存。
4.根据权利要求3所述的基于Hive的前置知识库优化方法,其特征在于,所述算法包括以下两种方式:根据运算和子运算中使用的具体操作出现的频次高低生成到运算集合,或根据语法树深度,按照语法树中深度大小生成到运算集合。
5.根据权利要求1所述的基于Hive的前置知识库优化方法,其特征在于,所述策略库包括规则库、模型策略表和set策略表,所述规则库包括规则表和计算公式表。
6.根据权利要求5所述的基于Hive的前置知识库优化方法,其特征在于,所述策略库生成set参数策略具体方式如下:
SQL解析器的解析结果输入到策略库,将逻辑运算频次和深度与规则库表中的规则和计算公式表中的计算公式匹配;
将表的属性参数输入到公式计算,将匹配到的规则与表属性对具体的set数值进行计算,生成最终的set策略。
CN202310564496.4A 2023-05-19 2023-05-19 一种基于Hive的前置知识库优化方法 Active CN116303372B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310564496.4A CN116303372B (zh) 2023-05-19 2023-05-19 一种基于Hive的前置知识库优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310564496.4A CN116303372B (zh) 2023-05-19 2023-05-19 一种基于Hive的前置知识库优化方法

Publications (2)

Publication Number Publication Date
CN116303372A true CN116303372A (zh) 2023-06-23
CN116303372B CN116303372B (zh) 2023-08-04

Family

ID=86820598

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310564496.4A Active CN116303372B (zh) 2023-05-19 2023-05-19 一种基于Hive的前置知识库优化方法

Country Status (1)

Country Link
CN (1) CN116303372B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109241104A (zh) * 2018-10-12 2019-01-18 北京聚云位智信息科技有限公司 决策型分布式数据库系统中aisql的解析器及其实现方法
CN109324793A (zh) * 2018-10-24 2019-02-12 北京奇虎科技有限公司 支持算法组件化的处理系统及方法
CN112988782A (zh) * 2021-02-18 2021-06-18 新华三大数据技术有限公司 Hive支持交互式查询的方法、装置及存储介质
US11055352B1 (en) * 2017-06-08 2021-07-06 Amazon Technologies, Inc. Engine independent query plan optimization
CN115203750A (zh) * 2022-09-19 2022-10-18 杭州比智科技有限公司 基于Hive插件对Hive数据权限管控及安全审计方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055352B1 (en) * 2017-06-08 2021-07-06 Amazon Technologies, Inc. Engine independent query plan optimization
CN109241104A (zh) * 2018-10-12 2019-01-18 北京聚云位智信息科技有限公司 决策型分布式数据库系统中aisql的解析器及其实现方法
CN109324793A (zh) * 2018-10-24 2019-02-12 北京奇虎科技有限公司 支持算法组件化的处理系统及方法
CN112988782A (zh) * 2021-02-18 2021-06-18 新华三大数据技术有限公司 Hive支持交互式查询的方法、装置及存储介质
CN115203750A (zh) * 2022-09-19 2022-10-18 杭州比智科技有限公司 基于Hive插件对Hive数据权限管控及安全审计方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
NAKABASAMI, KOSUKE ET AL.: "Optimization of Row Pattern Matching over Sequence Data in Spark SQL", LECTURE NOTES IN ARTIFICIAL INTELLIGENCE, pages 3 - 17 *
邹学利;: "Spark SQL优化器系统Catalyst的深入解析和应用", 决策咨询, no. 03, pages 67 - 72 *

Also Published As

Publication number Publication date
CN116303372B (zh) 2023-08-04

Similar Documents

Publication Publication Date Title
CN105868204B (zh) 一种转换Oracle脚本语言SQL的方法及装置
CN110555032A (zh) 一种基于元数据的数据血缘关系分析方法及系统
EP2184689B1 (en) Normalizing a filter condition of a database query
CN109582647B (zh) 一种面向非结构化证据文件的分析方法及系统
US10162613B1 (en) Re-usable rule parser for different runtime engines
US20100121868A1 (en) Converting a database query to a multi-dimensional expression query
CN110717319A (zh) 一种自助报表生成方法、装置、计算设备和系统
CN110909016B (zh) 基于数据库的重复关联检测方法、装置、设备及存储介质
CN117093599A (zh) 面向异构数据源的统一sql查询方法
CN112035508A (zh) 基于sql在线元数据解析的方法及系统、设备
CN112765209A (zh) 一种数据库间的sql语句语法迁移方法及系统
CN111367893A (zh) 数据库版本迭代的方法及装置
CN111198898A (zh) 大数据查询方法及大数据查询装置
CN110704472A (zh) 数据查询统计方法及装置
CN116303372B (zh) 一种基于Hive的前置知识库优化方法
CN112506488A (zh) 一种基于sql创建语句生成编程语言类的方法
CN114969101B (zh) Sql语句的处理方法及装置
CN115757593A (zh) 一种数据处理方法、装置及存储介质
CN115292347A (zh) 一种基于规则的主动式sql算法性能检查装置及方法
CN113032366A (zh) 基于Flex和Bison的SQL语法树解析方法
CN115858561A (zh) 统一sql的方法、系统、设备及介质
CN113064914A (zh) 数据提取方法及装置
CN111966727A (zh) 基于Spark和Hive的分布式OLAP即席查询方法
CN111859929A (zh) 一种数据可视化方法、装置及其相关设备
Patil et al. SQL ChatBot–using Context Free Grammar

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
GR01 Patent grant
GR01 Patent grant