CN117312383A - Hive任务的风险预警方法、装置、电子设备和介质 - Google Patents

Hive任务的风险预警方法、装置、电子设备和介质 Download PDF

Info

Publication number
CN117312383A
CN117312383A CN202311267084.0A CN202311267084A CN117312383A CN 117312383 A CN117312383 A CN 117312383A CN 202311267084 A CN202311267084 A CN 202311267084A CN 117312383 A CN117312383 A CN 117312383A
Authority
CN
China
Prior art keywords
query
information
analysis
risk
hive
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
Application number
CN202311267084.0A
Other languages
English (en)
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.)
Du Xiaoman Technology Beijing Co Ltd
Original Assignee
Du Xiaoman Technology Beijing Co Ltd
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 Du Xiaoman Technology Beijing Co Ltd filed Critical Du Xiaoman Technology Beijing Co Ltd
Priority to CN202311267084.0A priority Critical patent/CN117312383A/zh
Publication of CN117312383A publication Critical patent/CN117312383A/zh
Pending legal-status Critical Current

Links

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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • 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
    • 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/245Query processing
    • G06F16/2452Query translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种Hive任务的风险预警方法、装置、电子设备和介质。该方法包括:对输入的Hive任务进行查询语句分析,得到Hive任务对应的抽象语法树;对抽象语法树进行语法分析,得到抽象语法树对应的查询块集合;其中,查询块集合中包含至少一个查询块,查询块为查询语句的基本组成单元;对查询块集合进行翻译,得到与查询块集合对应的执行操作树;基于执行操作树生成逻辑执行计划信息;其中,逻辑执行计划信息用于描述执行操作树的逻辑执行过程;对逻辑执行计划信息进行分析,得到第一风险分析结果;基于第一风险分析结果输出Hive任务的第一风险预警消息。本发明可以更加全面地识别出Hive任务中存在的风险,从而提升Hive任务的风险分析结果的准确性。

Description

Hive任务的风险预警方法、装置、电子设备和介质
技术领域
本发明涉及大数据任务治理领域,尤其涉及一种Hive任务的风险预警方法、装置、电子设备和介质。
背景技术
针对Hive任务的治理是在Hive集群中实现对Hive任务的自动化管理、监控和调度,以确保Hive任务的可靠性。目前,可以对Hive的脚本语言(Hibernate Query Language,HQL)编写的Hive任务进行分析,将不合理的任务提前进行预警。然而,在实践中发现,Hive任务中的某些规则或风险点无法单纯从HQL层面识别,单纯对HQL进行分析无法全面地识别出存在风险的Hive任务,从而导致Hive任务的风险分析结果不够准确。
发明内容
有鉴于此,本发明实施例提供了一种Hive任务的风险预警方法、装置、电子设备和介质,以解决Hive任务的风险分析结果不够准确的问题。
在本发明实施方式的第一方面中,提供了一种Hive任务的风险预警方法,包括:
对输入的Hive任务进行查询语句分析,得到所述Hive任务对应的抽象语法树;
对所述抽象语法树进行语法分析,得到所述抽象语法树对应的查询块集合;其中,所述查询块集合中包含至少一个查询块,所述查询块为查询语句的基本组成单元;
对所述查询块集合进行翻译,得到与所述查询块集合对应的执行操作树;
基于所述执行操作树生成逻辑执行计划信息;其中,所述逻辑执行计划信息用于描述所述执行操作树的逻辑执行过程;
对所述逻辑执行计划信息进行分析,得到第一风险分析结果;
基于所述第一风险分析结果输出所述Hive任务的第一风险预警消息。
在本实施方式的一个实施例中,在所述得到所述Hive任务对应的抽象语法树之后,所述方法还包括:
对所述抽象语法树进行语义分析,得到第二风险分析结果;
基于所述第二风险分析结果输出所述Hive任务的第二风险预警消息。
在本实施方式的一个实施例中,所述对所述抽象语法树进行语义分析,得到第二风险分析结果,包括:
对所述抽象语法树进行语义分析,得到所述抽象语法树的查询语义信息;
若所述查询语义信息中存在用于查询数据库的分区表中全部数据的目标查询语义信息,则对所述目标查询语义信息中的where条件进行识别,得到第一识别结果;
若所述第一识别结果表示所述目标查询语义信息中不存在所述where条件,则确定所述第一识别结果对应的第一警告级别,并将所述第一识别结果和所述第一警告级别关联添加至第二风险分析结果。
在本实施方式的一个实施例中,所述得到所述抽象语法树的查询语义信息之后,所述方法还包括:
若所述查询语义信息中存在用于查询数据库的超大表中的数据的第二查询语义信息,则对所述第二查询语义信息进行识别,得到所述第二查询语义信息中查询数据的目标年限;
若所述目标年限大于预设年限,则确定表示所述第二查询语义信息中所述目标年限超期的超期信息,并确定所述超期信息对应的第二警告级别,以及将所述超期信息和所述第二及警告级别关联添加至第二风险分析结果。
在本实施方式的一个实施例中,所述基于所述执行操作树生成逻辑执行计划信息,包括:
基于所述执行操作树生成待优化逻辑执行计划信息;其中,所述待优化逻辑执行计划信息包括多个运算子树;
对所述待优化逻辑执行计划信息中的非必要运算子树进行优化,得到逻辑执行计划信息。
在本实施方式的一个实施例中,所述对所述逻辑执行计划信息进行分析,得到第一风险分析结果,包括:
对所述逻辑执行计划信息进行分析,得到分析信息;
若所述分析信息中存在随机函数,则确定所述随机函数对应的第三警告级别,并将所述随机函数和所述第三警告级别关联添加至第一风险分析结果。
在本实施方式的一个实施例中,所述得到分析信息之后,所述方法还包括:
若所述分析信息中存在用于进行笛卡尔积查询的目标分析信息,则对所述目标分析信息中的关联条件的正确性进行识别,得到第二识别结果;
若所述第二识别结果表示所述目标分析信息中的所述关联条件不正确,则确定所述第二识别结果对应的第四警告级别,并将所述第二识别结果和所述第四警告级别关联添加至第一风险分析结果。
在本实施方式的一个实施例中,所述得到分析信息之后,所述方法还包括:
若所述分析信息中存在目标去重函数,则将所述目标去重函数与非法去重函数进行对比,得到对比结果;
若所述对比结果表示所述目标去重函数与所述非法去重函数相同,则确定所述目标去重函数为非法去重函数,并确定所述非法去重函数对应的第五警告级别,以及将所述非法去重函数和所述第五警告级别关联添加至第一风险分析结果。
在本发明实施方式的第二方面中,提供了一种Hive任务的风险预警装置,包括:
第一分析单元,用于对输入的Hive任务进行查询语句分析,得到所述Hive任务对应的抽象语法树;
第二分析单元,用于对所述抽象语法树进行语法分析,得到所述抽象语法树对应的查询块集合;其中,所述查询块集合中包含至少一个查询块,所述查询块为查询语句的基本组成单元;
翻译单元,用于对所述查询块集合进行翻译,得到与所述查询块集合对应的执行操作树;
生成单元,用于基于所述执行操作树生成逻辑执行计划信息;其中,所述逻辑执行计划信息用于描述所述执行操作树的逻辑执行过程;
第三分析单元,用于对所述逻辑执行计划信息进行分析,得到第一风险分析结果;
输出单元,用于基于所述第一风险分析结果输出所述Hive任务的第一风险预警消息。
在本发明实施方式的第三方面中,提供了一种电子设备,包括:处理器;以及存储程序的存储器;其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行第一方面中任一项所述的方法。
在本发明实施方式的第四方面中,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行第一方面中任一项所述的方法。
本申请实施例中提供的一个或多个技术方案,能够对输入的Hive任务进行查询语句分析,得到Hive任务对应的抽象语法树;并且可以根据该抽象语法树,得到逻辑执行计划信息,通过该逻辑执行计划信息可以获得抽象语法树的执行逻辑,通过对逻辑执行计划信息进行分析,可以得到风险分析结果;基于对输入的Hive任务进行分析,确定出Hive任务对应的逻辑执行计划信息,进而对该逻辑执行计划信息进行风险分析,可以更加全面地识别出Hive任务中存在的风险,从而提升Hive任务的风险分析结果的准确性。
附图说明
在下面结合附图对于示例性实施例的描述中,本发明的更多细节、特征和优点被公开,在附图中:
图1示出了根据本发明示例性实施例的一种Hive任务的风险预警方法的流程示意图;
图2示出了根据本发明示例性实施例的一种确定第二风险分析结果方法的流程示意图图;
图3示出了根据本发明示例性实施例的一种确定第一风险分析结果方法的流程示意图图;
图4示出了根据本发明示例性实施例的可以在其中实施本文描述的各种方法的应用场景的示意图;
图5示出了根据本发明示例性实施例的一种Hive任务的风险预警装置的示意性框图;
图6示出了能够用于实现本发明的实施例的示例性电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本发明的实施例。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。
应当理解,本发明的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本发明中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本发明实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
下面参考图1,图1示出了根据本发明示例性实施例的Hive任务的风险预警方法的流程图。需要注意的是,本发明的实施方式可以应用于适用的任何场景。
图1所示的本发明示例性实施例的Hive任务的风险预警方法的流程,包括:
步骤S101,对输入的Hive任务进行查询语句分析,得到所述Hive任务对应的抽象语法树。
本发明的实施方式可以应用于Hive,Hive任务可以通过与Hive预见建立连接的客户端输入。Hive的驱动模块在接收到输入的Hive任务时,可以触发编译模块对该Hive任务进行处理。Hive任务可以为HQL构建的,也可以为SQL构建的,对此,本发明实施例不做限定。
本发明实施例中,对Hive任务进行查询语句分析可以包括SQL词法和语法解析,将SQL转化为抽象语法树(Abstract Syntax Tree,AST),AST是源代码的抽象语法结构的树状表示,它以树状的形式描述了代码的结构。每一个节点都表示源代码中的一种结构。构建AST的过程就是解析Hive任务的过程。
AST的构建过程包括以下几个步骤:
词法分析(Lexical Analysis):将Hive任务分解为一系列的记号。
语法分析(Syntax Analysis):根据语言的语法规则,将记号序列转化为一个记号栈。
语义分析(Semantic Analysis):根据语言语义规则,将记号栈转化为一个抽象语法树。
AST在编译器、解释器和源代码分析中非常有用。它可以帮助我们理解和操作源代码,进行代码重构、代码生成、代码优化、静态分析等任务。
举例来说,可以在步骤S101之前,先搭建hadoop集群,启动Hdfs(HadoopDistributed File System,分布式文件系统)存储服务及Yarn(Yet Another ResourceNegotiator)资源调度服务。构建第一步分析需要的工程DxmHiveSemanticAnalyzerHook。其中,DxmHiveSemanticAnalyzerHook在数据仓库中,通过自定义的语义分析逻辑,实现对SQL语句的优化或者对数据源的限制,从而提高数据处理和分析的性能和安全性。
作为一种可选的实施方式,步骤S101之后,还可以执行以下步骤:
对所述抽象语法树进行语义分析,得到第二风险分析结果;
基于所述第二风险分析结果输出所述Hive任务的第二风险预警消息。
其中,实施这种实施方式,可以在获取到抽象语法树时,就对抽象语法树进行风险分析,得到第二风险分析结果,通过该第二风险分析结果可以看出抽象语法树中存在的风险问题;以及通过输出根据第二风险分析结果得到的第二风险预警消息,可以及时的告知Hive任务的输入用户当前存在的问题,从而降低Hive任务的风险。
本发明实施例中,语义分析可以利用HiveSemanticAnalyzerHook,调用preAnalyze方法对抽象语法树执行语义分析。其中,HiveSemanticAnalyzerHook是Hive的一个钩子,用于在语法分析之前和之后执行自定义的语义分析逻辑。这个钩子的目的是为了在Hive的语法分析阶段之前和之后提供更多的灵活性和扩展性。
举例来说,遍历传进来的ASTNode(AST节点)抽象语法树,获取左子树的表名和右子树的where判断条件信息。如果该From表是分区表,则调用HiveMetaStoreClient,查询该表所有分区key。判断用户HQL中的where条件信息是否包含分区及包含多少个分区。根据不同规则予以不同日志级别的警示。如“未加分区字段”,“超大表不允许查询一年以上数据”等。
本发明另一实施例中,为了避免出现查询到错误结果的情况,可以对抽象语法树进行语义分析,得到查询语义信息,并且可以对查询语义信息中包含的用于查询数据库分析表中全部数据的目标查询语义信息进行识别,在确定出该目标查询语义信息存在之后,可以对该目标查询语义信息中的where条件进行识别,如果识别出where条件不存在时,可以认为该语义查询信息漏写了where条件,导致查询结果出错;因此需要对该目标查询语义信息对应的查询语句进行提示,如图2所示,则上述步骤“对所述抽象语法树进行语义分析,得到第二风险分析结果”可以由以下步骤S201~步骤S203代替:
步骤S201,对所述抽象语法树进行语义分析,得到所述抽象语法树的查询语义信息。
步骤S202,若所述查询语义信息中存在用于查询数据库的分区表中全部数据的目标查询语义信息,则对所述目标查询语义信息中的where条件进行识别,得到第一识别结果。
步骤S203,若所述第一识别结果表示所述目标查询语义信息中不存在所述where条件,则确定所述第一识别结果对应的第一警告级别,并将所述第一识别结果和所述第一警告级别关联添加至第二风险分析结果。
本发明实施例中,第一警告级别可以为警告等级。
实施上述的步骤S201~步骤S203,可以对抽象语法树进行语义分析,得到查询语义信息,并且可以对查询语义信息中包含的用于查询数据库分析表中全部数据的目标查询语义信息进行识别,在确定出该目标查询语义信息存在之后,可以对该目标查询语义信息中的where条件进行识别,如果识别出where条件不存在时,可以认为该语义查询信息漏写了where条件,导致查询结果出错;因此需要对该目标查询语义信息对应的查询语句进行提示,以避免出现查询到错误结果的情况。
作为一种可选的实施方式,步骤S201之后,还可以执行以下步骤:
若所述查询语义信息中存在用于查询数据库的超大表中的数据的第二查询语义信息,则对所述第二查询语义信息进行识别,得到所述第二查询语义信息中查询数据的目标年限;
若所述目标年限大于预设年限,则确定表示所述第二查询语义信息中所述目标年限超期的超期信息,并确定所述超期信息对应的第二警告级别,以及将所述超期信息和所述第二及警告级别关联添加至第二风险分析结果。
本发明实施例中,第二警告级别可以为严重等级。
其中,实施这种实施方式,可以在识别出查询语义信息中存在查询数据库的超大表中的数据的第二查询语义信息之后,若识别到该第二查询语义信息中查询数据的年限过大的情况,可以认为这个操作对设备的计算和存储压力过大,应该禁止这类操作,以保证设备的正常运行。
步骤S102,对所述抽象语法树进行语法分析,得到所述抽象语法树对应的查询块集合。
本发明实施例中,所述查询块集合中包含至少一个查询块,所述查询块(QueryBlock)为查询语句的基本组成单元。QueryBlock是一条SQL最基本的组成单元,包括三个部分:输入源、计算过程、输出。简单来讲一个QueryBlock就是一个子查询。
具体的,遍历AST,抽象出查询的基本组成单元QueryBlock。
步骤S103,对所述查询块集合进行翻译,得到与所述查询块集合对应的执行操作树。
步骤S104,基于所述执行操作树生成所述查询块对应的逻辑执行计划信息。
本发明实施例中,所述逻辑执行计划信息用于描述所述执行操作树的逻辑执行过程。
本发明实施例中,逻辑执行计划信息是SQL优化中的重要概念。逻辑执行计划信息生成过程就是根据逻辑SQL转换,生成一棵逻辑执行计划树,然后对逻辑执行计划树进行评估。逻辑执行计划信息通常是用来描述SQL语句的执行过程,不包含具体的物理操作细节。抽象语法树只代表了代码的结构,不包括程序的执行信息,执行操作树包含了程序执行过程中的所有操作。
作为一种可选的实施方式,步骤S104基于所述执行操作树生成逻辑执行计划信息的方式具体可以为:
基于所述执行操作树生成待优化逻辑执行计划信息;其中,所述待优化逻辑执行计划信息包括多个运算子树;
对所述待优化逻辑执行计划信息中的非必要运算子树进行优化,得到逻辑执行计划信息。
其中,实施这种实施方式,可以将待优化立即执行计划信息中存在非必要运算子树进行合并优化,以降低MapReduce中的数据量,从而在对逻辑执行计划信息进行后续分析时,可以减少分析的数据量,提升对逻辑执行计划信息进行分析的效率。
本发明实施例中,可以遍历QueryBlock,翻译为执行操作树Operator Tree,生成逻辑执行计划。
对逻辑执行计划进行优化:合并不必要的ReduceSinkOperator,减少shuffle数据量。其中,ReduceSinkOperator是一种在Apache Hive中使用的运算符,它用于将Map阶段的输出作为输入,并对数据进行汇总和归约操作。在遇到ReduceSinkOperator之前,所有的数据都被划分为Map阶段进行处理。当遇到ReduceSinkOperator时,Map阶段的输出将被归约和汇总,并将结果发送到下一个ReduceSinkOperator阶段。
以及,shuffle是一个过程,它将数据重新排列,以准备进行下一步计算或处理。在MapReduce模型中,shuffle是Map阶段和Reduce阶段之间的过程,它对Map阶段输出的数据进行排序和分组,以便Reduce阶段可以获取到需要的数据。
Shuffle过程通常涉及以下步骤:从每个Map任务输出文件中读取数据;对数据进行排序;对数据进行分组,按照指定的键进行排序;将分组后的数据发送到相应的Reduce任务。
步骤S105,对所述逻辑执行计划信息进行分析,得到第一风险分析结果。
本发明实施例中,可以遍历逻辑执行计划信息,对逻辑执行计划信息中的每一条信息都进行分析,得到分析结果;并且可以基于分析结果中表示存在风险的语句确定出第一风险分析结果。
本发明另一实施例中,为了保证数据的统一性,可以对逻辑执行信息进行第一次分析,得到分析信息;若是该分析信息中包含随机函数,则将随机函数和随机函数对应的第三警告级别关联添加至第一风险分析结果,如图3所示,则上述步骤S105由以下步骤S301~步骤S302代替:
步骤S301,对所述逻辑执行计划信息进行分析,得到分析信息;
步骤S302,若所述分析信息中存在随机函数,则确定所述随机函数对应的第三警告级别,并将所述随机函数和所述第三警告级别关联添加至第一风险分析结果。
本发明实施例中,第三警告级别可以为警告等级。
实施上述的步骤S301~步骤S302,可以对逻辑执行信息进行第一次分析,得到分析信息;若是该分析信息中包含随机函数,则可能会出现数据不一致的情况,因此,避免使用随机函数可以保证数据的统一性。
作为一种可选的实施方式,步骤S301之后,还可以执行以下步骤:
若所述分析信息中存在用于进行笛卡尔积查询的目标分析信息,则对所述目标分析信息中的关联条件的正确性进行识别,得到第二识别结果;
若所述第二识别结果表示所述目标分析信息中的所述关联条件不正确,则确定所述第二识别结果对应的第四警告级别,并将所述第二识别结果和所述第四警告级别关联添加至第一风险分析结果。
本发明实施例中,第四警告级别可以为警告等级。
其中,实施这种实施方式,可以在检测出笛卡尔积查询的情况下,对其对应的目标分析信息中的关联条件的正确性进行识别,若关联条件不正确,则确定笛卡尔积查询的雨具存在问题,保证了笛卡尔积查询的准确性。
可选的,步骤S301之后,还可以执行以下步骤:
若所述分析信息中存在目标去重函数,则将所述目标去重函数与非法去重函数进行对比,得到对比结果;
若所述对比结果表示所述目标去重函数与所述非法去重函数相同,则确定所述目标去重函数为非法去重函数,并确定所述非法去重函数对应的第五警告级别,以及将所述非法去重函数和所述第五警告级别关联添加至第一风险分析结果。
本发明实施例中,第五警告级别可以为建议等级。
其中,实施这种实施方式,可以在确定出分析信息中包含目标去重函数时,对该目标去重函数与非法去重函数进行对比,如果目标去重函数与非法去重函数相同,则可以认为目标去重函数即为非法去重函数。由于非法去重函数的效率较低,因此通过这中方式可以将该非法去重函数更换位效率更高的去重函数,提升了对数据库中的数据进行去重的效率。
本发明实施例中,更换的去重函数可以为分组查询函数(groupby),可以提升数据去重的效率。
步骤S106,基于所述第一风险分析结果输出所述Hive任务的第一风险预警消息。
本发明实施例中,可以根据不同的警告级别确定出不同的解决方式。
例如,建议等级的风险预警消息,输入Hive任务的客户端可以更改Hive任务,也可以不更改Hive任务。
警告等级的风险预警消息,输入Hive任务的客户端需要更改Hive任务。
严重等级的风险预警消息,输入Hive任务的客户端需要删除Hive任务。
作为一种可选的实施方式,在步骤S106之后,还可以执行以下步骤:
遍历Operator Tree,翻译为MapReduce任务,生成物理执行计划Task Tree;
构建执行计划QueryPlan物理层优化器进行MapReduce任务的变换,生成最终的执行计划,以物理优化Task Tree;
执行引擎执行最终的执行计划。
具体的,进行源码编译,将编译后的服务端安装到规划好的Hive节点上,并配置完毕相关集群参数信息。
将DxmHiveSemanticAnalyzerHook工程包编译好,放到Hive服务端的auxlib路径下;
顺序启动服务HiveMetaStore、HiveServer2;其中,HiveServer2是一个服务接口,能够允许远程的客户端去执行SQL请求且得到检索结果。
运行Beeline进行交互操作,提交SQL。其中,Beeline是Hive提供的一个新的命令行工具,它基于SQLLine CLI,可以作为Hive JDBC Client端访问Hive Server2。Beeline可以与HiveServer2配合使用,支持嵌入模式和远程模式两种方式,可以像hive client一样访问本机的hive服务,也可以通过指定ip和端口访问远程hive服务。
请一并参阅图4,图4示出了根据本发明示例性实施例的可以在其中实施本文描述的各种方法的应用场景的示意图。具体的,客户端可以向Hive的驱动模块Driver提交HQL,可以将HQL传输至编译模块Compiler,以使Compiler对HQL分析语法树,得到抽象语法树ASTTree;并对AST Tree进行遍历,抽象出查询块QueryBlock;并且可以对该QueryBlock进行分析执行计划,得到执行操作树Operator Tree,最终可以根据Operator Tree确定出物理执行计划;将基于物理执行计划得到的job发送至执行引擎Execution Engine,以使Execution Engine根据输入的job得到结果,并将得到的结果反馈至Compiler。Metastore为元数据存储模块,可以用于向Compiler提供需要的元数据。
本发明能够更加全面地识别出Hive任务中存在的风险,从而提升Hive任务的风险分析结果的准确性。此外,本发明还可以避免出现查询到错误结果的情况。此外,本发明还可以保证设备的正常运行。此外,本发明还可以提升对逻辑执行计划信息进行分析的效率。此外,本发明还可以保证数据的统一性。此外,本发明还可以保证了笛卡尔积查询的准确性。此外,本发明还可以提升对数据库中的数据进行去重的效率。
在介绍了本发明示例性实施方式的方法之后,接下来请参考图5,图5示出了根据本发明示例性实施例的Hive任务的风险预警装置的示意性框图,该装置包括:
第一分析单元501,用于对输入的Hive任务进行查询语句分析,得到所述Hive任务对应的抽象语法树;
第二分析单元502,用于对第一分析单元501得到的所述抽象语法树进行语法分析,得到所述抽象语法树对应的查询块集合;其中,所述查询块集合中包含至少一个查询块,所述查询块为查询语句的基本组成单元;
翻译单元503,用于对第二分析单元502得到的所述查询块集合进行翻译,得到与所述查询块集合对应的执行操作树;
生成单元504,用于基于翻译单元503得到的所述执行操作树生成逻辑执行计划信息;其中,所述逻辑执行计划信息用于描述所述执行操作树的逻辑执行过程;
第三分析单元505,用于对生成单元504得到的所述逻辑执行计划信息进行分析,得到第一风险分析结果;
输出单元506,用于基于第三分析单元505得到的所述第一风险分析结果输出所述Hive任务的第一风险预警消息。
作为一种可选的实施方式,第一分析单元501还用于:
在所述得到所述Hive任务对应的抽象语法树之后,对所述抽象语法树进行语义分析,得到第二风险分析结果;
基于所述第二风险分析结果输出所述Hive任务的第二风险预警消息。
其中,实施这种实施方式,可以在获取到抽象语法树时,就对抽象语法树进行风险分析,得到第二风险分析结果,通过该第二风险分析结果可以看出抽象语法树中存在的风险问题;以及通过输出根据第二风险分析结果得到的第二风险预警消息,可以及时的告知Hive任务的输入用户当前存在的问题,从而降低Hive任务的风险。
作为一种可选的实施方式,第一分析单元501对所述抽象语法树进行语义分析,得到第二风险分析结果的方式具体可以为:
对所述抽象语法树进行语义分析,得到所述抽象语法树的查询语义信息;
若所述查询语义信息中存在用于查询数据库的分区表中全部数据的目标查询语义信息,则对所述目标查询语义信息中的where条件进行识别,得到第一识别结果;
若所述第一识别结果表示所述目标查询语义信息中不存在所述where条件,则确定所述第一识别结果对应的第一警告级别,并将所述第一识别结果和所述第一警告级别关联添加至第二风险分析结果。
其中,实施这种实施方式,可以对抽象语法树进行语义分析,得到查询语义信息,并且可以对查询语义信息中包含的用于查询数据库分析表中全部数据的目标查询语义信息进行识别,在确定出该目标查询语义信息存在之后,可以对该目标查询语义信息中的where条件进行识别,如果识别出where条件不存在时,可以认为该语义查询信息漏写了where条件,导致查询结果出错;因此需要对该目标查询语义信息对应的查询语句进行提示,以避免出现查询到错误结果的情况。
作为一种可选的实施方式,第一分析单元501还用于:
在得到所述抽象语法树的查询语义信息之后,若所述查询语义信息中存在用于查询数据库的超大表中的数据的第二查询语义信息,则对所述第二查询语义信息进行识别,得到所述第二查询语义信息中查询数据的目标年限;
若所述目标年限大于预设年限,则确定表示所述第二查询语义信息中所述目标年限超期的超期信息,并确定所述超期信息对应的第二警告级别,以及将所述超期信息和所述第二及警告级别关联添加至第二风险分析结果。
其中,实施这种实施方式,可以在识别出查询语义信息中存在查询数据库的超大表中的数据的第二查询语义信息之后,若识别到该第二查询语义信息中查询数据的年限过大的情况,可以认为这个操作对设备的计算和存储压力过大,应该禁止这类操作,以保证的正常运行。
作为一种可选的实施方式,翻译单元503基于所述执行操作树生成逻辑执行计划信息的方式具体可以为:
基于所述执行操作树生成待优化逻辑执行计划信息;其中,所述待优化逻辑执行计划信息包括多个运算子树;
对所述待优化逻辑执行计划信息中的非必要运算子树进行优化,得到逻辑执行计划信息。
其中,实施这种实施方式,可以将待优化立即执行计划信息中存在非必要运算子树进行合并优化,以降低MapReduce中的数据量,从而在对逻辑执行计划信息进行后续分析时,可以减少分析的数据量,提升对逻辑执行计划信息进行分析的效率。
作为一种可选的实施方式,第三分析单元505对所述逻辑执行计划信息进行分析,得到第一风险分析结果的方式具体可以为:
对所述逻辑执行计划信息进行分析,得到分析信息;
若所述分析信息中存在随机函数,则确定所述随机函数对应的第三警告级别,并将所述随机函数和所述第三警告级别关联添加至第一风险分析结果。
其中,实施这种实施方式,可以对逻辑执行信息进行第一次分析,得到分析信息;若是该分析信息中包含随机函数,则可能会出现数据不一致的情况,因此,避免使用随机函数可以保证数据的统一性。
作为一种可选的实施方式,第三分析单元505还用于:
在得到分析信息之后,若所述分析信息中存在用于进行笛卡尔积查询的目标分析信息,则对所述目标分析信息中的关联条件的正确性进行识别,得到第二识别结果;
若所述第二识别结果表示所述目标分析信息中的所述关联条件不正确,则确定所述第二识别结果对应的第四警告级别,并将所述第二识别结果和所述第四警告级别关联添加至第一风险分析结果。
其中,实施这种实施方式,可以在检测出笛卡尔积查询的情况下,对其对应的目标分析信息中的关联条件的正确性进行识别,若关联条件不正确,则确定笛卡尔积查询的雨具存在问题,保证了笛卡尔积查询的准确性。
作为一种可选的实施方式,第三分析单元505还用于:
在得到分析信息之后,若所述分析信息中存在目标去重函数,则将所述目标去重函数与非法去重函数进行对比,得到对比结果;
若所述对比结果表示所述目标去重函数与所述非法去重函数相同,则确定所述目标去重函数为非法去重函数,并确定所述非法去重函数对应的第五警告级别,以及将所述非法去重函数和所述第五警告级别关联添加至第一风险分析结果。
其中,实施这种实施方式,可以在确定出分析信息中包含目标去重函数时,对该目标去重函数与非法去重函数进行对比,如果目标去重函数与非法去重函数相同,则可以认为目标去重函数即为非法去重函数。由于非法去重函数的效率较低,因此通过这中方式可以将该非法去重函数更换位效率更高的去重函数,提升了对数据库中的数据进行去重的效率。
本发明能够更加全面地识别出Hive任务中存在的风险,从而提升Hive任务的风险分析结果的准确性。此外,本发明还可以避免出现查询到错误结果的情况。此外,本发明还可以保证设备的正常运行。此外,本发明还可以提升对逻辑执行计划信息进行分析的效率。此外,本发明还可以保证数据的统一性。此外,本发明还可以保证了笛卡尔积查询的准确性。此外,本发明还可以提升对数据库中的数据进行去重的效率。
本发明示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本发明实施例的方法。
本发明示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。
本发明示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。
参考图6,现将描述可以作为本发明的服务器或客户端的电子设备600的结构框图,其是可以应用于本发明的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图6所示,电子设备600包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元606加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
电子设备600中的多个部件连接至I/O接口605,包括:输入单元606、输出单元607、存储单元608以及通信单元609。输入单元606可以是能向电子设备600输入信息的任何类型的设备,输入单元606可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元607可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元604可以包括但不限于磁盘、光盘。通信单元609允许电子设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理。例如,在一些实施例中,Hive任务的风险预警方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到电子设备600上。在一些实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行Hive任务的风险预警方法。
用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
如本发明使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

Claims (11)

1.一种Hive任务的风险预警方法,其特征在于,包括:
对输入的Hive任务进行查询语句分析,得到所述Hive任务对应的抽象语法树;
对所述抽象语法树进行语法分析,得到所述抽象语法树对应的查询块集合;其中,所述查询块集合中包含至少一个查询块,所述查询块为查询语句的基本组成单元;
对所述查询块集合进行翻译,得到与所述查询块集合对应的执行操作树;
基于所述执行操作树生成逻辑执行计划信息;其中,所述逻辑执行计划信息用于描述所述执行操作树的逻辑执行过程;
对所述逻辑执行计划信息进行分析,得到第一风险分析结果;
基于所述第一风险分析结果输出所述Hive任务的第一风险预警消息。
2.根据权利要求1所述的Hive任务的风险预警方法,其特征在于,在所述得到所述Hive任务对应的抽象语法树之后,所述方法还包括:
对所述抽象语法树进行语义分析,得到第二风险分析结果;
基于所述第二风险分析结果输出所述Hive任务的第二风险预警消息。
3.根据权利要求2所述的Hive任务的风险预警方法,其特征在于,所述对所述抽象语法树进行语义分析,得到第二风险分析结果,包括:
对所述抽象语法树进行语义分析,得到所述抽象语法树的查询语义信息;
若所述查询语义信息中存在用于查询数据库的分区表中全部数据的目标查询语义信息,则对所述目标查询语义信息中的where条件进行识别,得到第一识别结果;
若所述第一识别结果表示所述目标查询语义信息中不存在所述where条件,则确定所述第一识别结果对应的第一警告级别,并将所述第一识别结果和所述第一警告级别关联添加至第二风险分析结果。
4.根据权利要求3所述的Hive任务的风险预警方法,其特征在于,所述得到所述抽象语法树的查询语义信息之后,所述方法还包括:
若所述查询语义信息中存在用于查询数据库的超大表中的数据的第二查询语义信息,则对所述第二查询语义信息进行识别,得到所述第二查询语义信息中查询数据的目标年限;
若所述目标年限大于预设年限,则确定表示所述第二查询语义信息中所述目标年限超期的超期信息,并确定所述超期信息对应的第二警告级别,以及将所述超期信息和所述第二及警告级别关联添加至第二风险分析结果。
5.根据权利要求1所述的Hive任务的风险预警方法,其特征在于,所述基于所述执行操作树生成逻辑执行计划信息,包括:
基于所述执行操作树生成待优化逻辑执行计划信息;其中,所述待优化逻辑执行计划信息包括多个运算子树;
对所述待优化逻辑执行计划信息中的非必要运算子树进行优化,得到逻辑执行计划信息。
6.根据权利要求1~5任一项所述的Hive任务的风险预警方法,其特征在于,所述对所述逻辑执行计划信息进行分析,得到第一风险分析结果,包括:
对所述逻辑执行计划信息进行分析,得到分析信息;
若所述分析信息中存在随机函数,则确定所述随机函数对应的第三警告级别,并将所述随机函数和所述第三警告级别关联添加至第一风险分析结果。
7.根据权利要求6所述的Hive任务的风险预警方法,其特征在于,所述得到分析信息之后,所述方法还包括:
若所述分析信息中存在用于进行笛卡尔积查询的目标分析信息,则对所述目标分析信息中的关联条件的正确性进行识别,得到第二识别结果;
若所述第二识别结果表示所述目标分析信息中的所述关联条件不正确,则确定所述第二识别结果对应的第四警告级别,并将所述第二识别结果和所述第四警告级别关联添加至第一风险分析结果。
8.根据权利要求6所述的Hive任务的风险预警方法,其特征在于,所述得到分析信息之后,所述方法还包括:
若所述分析信息中存在目标去重函数,则将所述目标去重函数与非法去重函数进行对比,得到对比结果;
若所述对比结果表示所述目标去重函数与所述非法去重函数相同,则确定所述目标去重函数为非法去重函数,并确定所述非法去重函数对应的第五警告级别,以及将所述非法去重函数和所述第五警告级别关联添加至第一风险分析结果。
9.一种Hive任务的风险预警装置,其特征在于,包括:
第一分析单元,用于对输入的Hive任务进行查询语句分析,得到所述Hive任务对应的抽象语法树;
第二分析单元,用于对所述抽象语法树进行语法分析,得到所述抽象语法树对应的查询块集合;其中,所述查询块集合中包含至少一个查询块,所述查询块为查询语句的基本组成单元;
翻译单元,用于对所述查询块集合进行翻译,得到与所述查询块集合对应的执行操作树;
生成单元,用于基于所述执行操作树生成逻辑执行计划信息;其中,所述逻辑执行计划信息用于描述所述执行操作树的逻辑执行过程;
第三分析单元,用于对所述逻辑执行计划信息进行分析,得到第一风险分析结果;
输出单元,用于基于所述第一风险分析结果输出所述Hive任务的第一风险预警消息。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-8中任一项所述的方法。
11.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使计算机执行根据权利要求1-8中任一项所述的方法。
CN202311267084.0A 2023-09-27 2023-09-27 Hive任务的风险预警方法、装置、电子设备和介质 Pending CN117312383A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311267084.0A CN117312383A (zh) 2023-09-27 2023-09-27 Hive任务的风险预警方法、装置、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311267084.0A CN117312383A (zh) 2023-09-27 2023-09-27 Hive任务的风险预警方法、装置、电子设备和介质

Publications (1)

Publication Number Publication Date
CN117312383A true CN117312383A (zh) 2023-12-29

Family

ID=89236700

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311267084.0A Pending CN117312383A (zh) 2023-09-27 2023-09-27 Hive任务的风险预警方法、装置、电子设备和介质

Country Status (1)

Country Link
CN (1) CN117312383A (zh)

Similar Documents

Publication Publication Date Title
US8661023B1 (en) Optimizing search query logic to speed retrieval
EP4099170B1 (en) Method and apparatus of auditing log, electronic device, and medium
EP3807788A1 (en) User interface for regular expression generation
CN110704290B (zh) 日志分析方法及装置
US10936308B2 (en) Multi-tenant collaborative learning
CN113901083B (zh) 基于多解析器的异构数据源操作资源解析定位方法和设备
CN113672628A (zh) 数据血缘分析方法、终端设备及介质
CN112882863A (zh) 恢复数据的方法、装置、系统和电子设备
CN113419789A (zh) 数据模型脚本的生成方法和装置
CN108959294B (zh) 一种访问搜索引擎的方法和装置
CN106843822B (zh) 一种执行代码生成方法及设备
CN116010461A (zh) 数据血缘关系解析方法及装置、存储介质及电子设备
CN117312383A (zh) Hive任务的风险预警方法、装置、电子设备和介质
CN114090514A (zh) 分布式系统的日志检索方法及装置
CN112069031A (zh) 异常查询方法、装置、设备及计算机可读存储介质
CN112527880B (zh) 大数据集群元数据信息的采集方法、装置、设备及介质
CN110727457A (zh) 组件管理方法、装置、存储介质及电子设备
CN111881128B (zh) 大数据回归验证方法及大数据回归验证装置
US11327938B2 (en) Method to improve prediction accuracy of business data with enhanced data filtering and data reduction mechanism
CN108958654B (zh) 一种存储系统的管理方法及相关装置
CN117131067A (zh) 数据处理方法、装置、存储介质及电子设备
CN114722041A (zh) 一种数据查重的方法、装置及介质
CN115617343A (zh) 编译描述文件的代码注入方法、系统和电子设备
CN117632639A (zh) 应用程序监控方法、系统、电子设备及存储介质
US20190258705A1 (en) Applying Matching Data Transformation Information Based on a User's Editing of Data within a Document

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