一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于Hook过滤器的HiveSQL规范性检测方法及系统与流程

2022-04-13 16:05:19 来源:中国专利 TAG:

基于hook过滤器的hivesql规范性检测方法及系统
技术领域
1.本发明涉及大数据安全管理技术领域,尤其涉及一种基于hook过滤器的hivesql规范性检测方法以及一种基于hook过滤器的hivesql规范性检测系统。


背景技术:

2.目前大数据平台大部分离线业务都依赖于hive,部分hql代码质量不高,使用组件不合理,导致作业长时间执行不结束或者时间过长的问题,并且,长时间运行占用资源,影响其他作业的执行,平台整体效能低。
3.基于hive慢sql问题,可采取检测的实现方式很多:
4.技术1、druid内置sql parser
5.(1)性能:比antlr、javacc之类工具生成的parser快10倍~100倍。适合实时sql统计和解析。
6.(2)优点:性能比基于antlr和基于java的sqlparser好,支持的数据源丰富。
7.(3)缺点:hive sql不完全支持,架构封装复杂,二次开发难度大。
8.技术2、uber使用的sql解析器
9.(1)优点:支持vertica,hive和presto sql的语法解析和分析。功能丰富,能满足一部分合规性检测需求。
10.(2)缺点:开发语言不了解,开发难度大;
11.技术3、基于hive hook过滤器
12.(1)优点:hive自身提供的api集成性、兼容性好;以java语言开发,方便入手;可实现分析job数量、hive执行计划、hive sql血缘关系lineageinfo等功能。
13.(2)缺点:支持的语法仅适用于hive,接口功能目前不满足本次sql合规性检测的要求,需要二次开发。


技术实现要素:

14.针对上述问题,本发明提供了一种基于hook过滤器的hivesql规范性检测方法及系统,通过hive hook过滤器,根据预设的hql不同问题类别,分别采用对应类别的条件进行逻辑判断,实现hivesql规范性检测,从而基于检测结果对sql语句进行质量优化,提升开发hql代码质量,降低平台资源使用率,提升平台资源效能,增强平台的可用性和稳定性。
15.为实现上述目的,本发明提供了一种基于hook过滤器的hivesql规范性检测方法,包括:利用hive接口获取sql语句,基于hook过滤器拦截所述sql语句;根据所述sql语句的预设问题类型,依次执行各类型的sql规范性检测;统计针对所述sql语句的规范性检测结果。
16.在上述技术方案中,优选地,在利用hive接口获取sql语句前,基于运维历史数据,分析并统计得到执行变慢的作业,并利用hive接口获取对应的sql语句。
17.在上述技术方案中,优选地,基于hook过滤器的hivesql规范性检测方法还包括:
根据所述sql语句的规范性检测结果,对所述sql语句的规范质量进行打分;根据打分情况及预设评判机制,判断是否需要对当前sql语句进行优化;若需要优化,则派单至作业开发者进行整改优化当前sql语句;在整改完成后,对当前sql语句进行闭环评价。
18.在上述技术方案中,优选地,基于hook过滤器的hivesql规范性检测方法还包括:将所述sql语句的规范性检测结果以报表形式进行可视化展示;
19.其中,所述规范性检测结果包括总sql语句数量、告警sql语句数量、告警sql语句占比、sql告警类型和告警类型占比。
20.在上述技术方案中,优选地,sql规范性检测过程中,针对所述sql语句预设的可能出现的问题类型,每种问题类型采用相应的规范性sql分析语句,依次执行所有预设问题类型的规范性sql分析语句,判断所述sql语句中存在的问题类型。
21.本发明还提出一种基于hook过滤器的hivesql规范性检测系统,应用如上述技术方案中任一项公开的基于hook过滤器的hivesql规范性检测方法,包括:
22.sql拦截模块,用于利用hive接口获取sql语句,基于hook过滤器拦截所述sql语句;
23.sql检测模块,用于根据所述sql语句的预设问题类型,依次执行各类型的sql规范性检测;
24.结果统计模块,用于统计针对所述sql语句的规范性检测结果。
25.在上述技术方案中,优选地,基于hook过滤器的hivesql规范性检测系统还包括运维分析模块,用于在利用hive接口获取sql语句前,基于运维历史数据,分析并统计得到执行变慢的作业,并利用所述sql拦截模块获取对应的sql语句。
26.在上述技术方案中,优选地,基于hook过滤器的hivesql规范性检测系统还包括质量评估模块,用于根据所述sql语句的规范性检测结果,对所述sql语句的规范质量进行打分;
27.sql优化模块,用于根据打分情况及预设评判机制,判断是否需要对当前sql语句进行优化,若需要优化,则派单至作业开发者进行整改优化当前sql语句;
28.所述质量评估模块还用于在整改完成后,对当前sql语句进行闭环评价。
29.在上述技术方案中,优选地,基于hook过滤器的hivesql规范性检测系统还包括结果展示模块,用于将所述sql语句的规范性检测结果以报表形式进行可视化展示;
30.其中,所述规范性检测结果包括总sql语句数量、告警sql语句数量、告警sql语句占比、sql告警类型和告警类型占比。
31.在上述技术方案中,优选地,所述sql检测模块在sql规范性检测过程中,针对所述sql语句预设的可能出现的问题类型,每种问题类型采用相应的规范性sql分析语句,依次执行所有预设问题类型的规范性sql分析语句,判断所述sql语句中存在的问题类型。
32.与现有技术相比,本发明的有益效果为:通过hive hook过滤器,根据预设的hql不同问题类别,分别采用对应类别的条件进行逻辑判断,实现hivesql规范性检测,从而基于检测结果对sql语句进行质量优化,提升了开发hql代码质量,降低了平台资源使用率,提升了平台资源效能,增强了平台的可用性和稳定性。
附图说明
33.图1为本发明一种实施例公开的基于hook过滤器的hivesql规范性检测方法的流程示意图;
34.图2为本发明一种实施例公开的采用hivesql规范性检测方法的执行流程对比示意图;
35.图3为本发明一种实施例公开的基于hook过滤器的hivesql规范性检测方法的执行时序示意图;
36.图4为本发明一种实施例公开的基于hook过滤器的hivesql规范性检测方法的实施框架示意图;
37.图5为本发明一种实施例公开的基于hook过滤器的hivesql规范性检测系统的模块示意图。
38.图中,各组件与附图标记之间的对应关系为:
39.11.sql拦截模块,12.sql检测模块,13.结果统计模块,14.运维分析模块,15.质量评估模块,16.sql优化模块,17.结果展示模块。
具体实施方式
40.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.下面结合附图对本发明做进一步的详细描述:
42.如图1和图2所示,根据本发明提供的一种基于hook过滤器的hivesql规范性检测方法,包括:利用hive接口获取sql语句,基于hook过滤器拦截sql语句;根据sql语句的预设问题类型,依次执行各类型的sql规范性检测;统计针对sql语句的规范性检测结果。
43.在该实施例中,通过hive hook过滤器,根据预设的hql不同问题类别,分别采用对应类别的条件进行逻辑判断,实现hivesql规范性检测,从而基于检测结果对sql语句进行质量优化,提升了开发hql代码质量,降低了平台资源使用率,提升了平台资源效能,增强了平台的可用性和稳定性。
44.具体地,上述规范性检测方法可用于至少以下三种场景:
45.(1)开发人员可在sql上线前,使用该方法进行sql检测、优化;
46.(2)对已上线的sql,对统计出来的执行慢的sql进行检测、提供优化建议;
47.(3)对已上线运行中的所有sql进行检测,自动进行分析优化。
48.如图3所示,具体地,在利用本方法对hivesql进行规范性检测的实施过程中,采用pre-execution hooks,在执行引擎执行查询之前,将调用pre-execution hooks。该方法继承executewithhookcontext接口,executewithhookcontext扩展hook接口以将hookcontext传递给hook。hookcontext包含了hook可以使用的所有信息。hookcontext被传递给名称中包含“withcontext”的所有钩子。
49.进一步地,将打好的jar包放入hive的lib目录下,客户端连接hive指定hook入口类,提交sql语句,违反13类问题会提出优化建议。
50.在上述实施例中,优选地,sql规范性检测过程中,针对sql语句预设的可能出现的问题类型,每种问题类型采用相应的规范性sql分析语句,依次执行所有预设问题类型的规范性sql分析语句analysesql,判断sql语句中存在的问题类型。
51.根据已有经验总结,可判断的13类预设问题类型包括:
52.1)多表(4张及以上)表关联
53.2)未合理进行分区,分桶
54.3)无意义的子查询
55.4)宽表关联,但结果是窄表
56.5)小文件太多,未合并
57.6)map、reduce个数分配不合理
58.7)在资源占满时提交sql
59.8)map阶段跨网络数据传输太多
60.9)数据倾斜
61.10)map、reduce参数设置不合理
62.11)sql并发量太多
63.12)租户资源与实际需求资源不匹配
64.13)分区未进行有效裁剪。
65.在上述实施例中,优选地,在利用hive接口获取sql语句前,基于运维历史数据进行趋势分析,分析并统计得到突然执行变慢的作业,并利用hive接口获取对应的sql语句,从而针对性地判断突然执行变慢的作业对应的sql语句发生了何种问题。
66.如图4所示,在上述实施例中,优选地,基于hook过滤器的hivesql规范性检测方法还包括:
67.根据sql语句的规范性检测结果,对sql语句的规范质量进行打分;
68.根据打分情况及预设评判机制,判断是否需要对当前sql语句进行优化;
69.若需要优化,则派单至作业开发者,对当前sql语句进行整改优化;
70.在整改完成后,对当前sql语句进行闭环评价,确认整改完成,流程结束。
71.在上述实施例中,优选地,基于hook过滤器的hivesql规范性检测方法还包括:
72.将sql语句的规范性检测结果以报表形式进行可视化展示;
73.其中,规范性检测结果包括总sql语句数量、告警sql语句数量、告警sql语句占比、sql告警类型和告警类型占比等。
74.如图5所示,本发明还提出一种基于hook过滤器的hivesql规范性检测系统,应用如上述实施例中任一项公开的基于hook过滤器的hivesql规范性检测方法,包括:
75.sql拦截模块11,用于利用hive接口获取sql语句,基于hook过滤器拦截sql语句;
76.sql检测模块12,用于根据sql语句的预设问题类型,依次执行各类型的sql规范性检测;
77.结果统计模块13,用于统计针对sql语句的规范性检测结果。
78.在该实施例中,通过hive hook过滤器,根据预设的hql不同问题类别,分别采用对应类别的条件进行逻辑判断,实现hivesql规范性检测,从而基于检测结果对sql语句进行质量优化,提升了开发hql代码质量,降低了平台资源使用率,提升了平台资源效能,增强了
平台的可用性和稳定性。
79.在上述实施例中,优选地,基于hook过滤器的hivesql规范性检测系统还包括运维分析模块14,用于在利用hive接口获取sql语句前,基于运维历史数据,分析并统计得到执行变慢的作业,并利用sql拦截模块11获取对应的sql语句。
80.在上述实施例中,优选地,基于hook过滤器的hivesql规范性检测系统还包括质量评估模块15,用于根据sql语句的规范性检测结果,对sql语句的规范质量进行打分;
81.sql优化模块16,用于根据打分情况及预设评判机制,判断是否需要对当前sql语句进行优化,若需要优化,则派单至作业开发者进行整改优化当前sql语句;
82.质量评估模块15还用于在整改完成后,对当前sql语句进行闭环评价。
83.在上述实施例中,优选地,基于hook过滤器的hivesql规范性检测系统还包括结果展示模块17,用于将sql语句的规范性检测结果以报表形式进行可视化展示;
84.其中,规范性检测结果包括总sql语句数量、告警sql语句数量、告警sql语句占比、sql告警类型和告警类型占比。
85.在上述实施例中,优选地,sql检测模块12在sql规范性检测过程中,针对sql语句预设的可能出现的问题类型,每种问题类型采用相应的规范性sql分析语句,依次执行所有预设问题类型的规范性sql分析语句,判断sql语句中存在的问题类型。
86.根据上述实施例公开的基于hook过滤器的hivesql规范性检测系统,其中各模块所实现的功能,与上述实施例公开的hivesql规范性检测方法中各步骤分别对应,其具体实施方式参照上述实施例,在此不再赘述。
87.以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献