CN111813796A - 基于Hive数据仓库的数据列级血缘处理***及方法 - Google Patents
基于Hive数据仓库的数据列级血缘处理***及方法 Download PDFInfo
- Publication number
- CN111813796A CN111813796A CN202010541245.0A CN202010541245A CN111813796A CN 111813796 A CN111813796 A CN 111813796A CN 202010541245 A CN202010541245 A CN 202010541245A CN 111813796 A CN111813796 A CN 111813796A
- Authority
- CN
- China
- Prior art keywords
- data
- hive
- information
- sql
- execution plan
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Hive数据仓库的数据列级血缘处理***及方法,其中,该***包括:SQL预处理模块,用于对用户输入的SQL信息进行预处理;SQL解析模块,用于将预处理后的SQL信息解析为具体Hive执行计划;数据血缘解析模块,用于根据所述具体Hive执行计划,结合Hive执行上下文信息,解析出对应的数据血缘依赖关系;数据存储模块,用于将所述数据血缘依赖关系,以数据上下游依赖关系的形式存储进入数据库。该***在保证数据血缘功能和Hive数据仓库之间的低耦合的前提下,实现了数据血缘解析结果的细粒度和高准确性。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种基于Hive数据仓库的数据列级血缘处理***及方法。
背景技术
对于大数据而言,数据仓库存储着整个企业的全部业务数据。当前的大数据技术都是基于Hadoop生态的大数据框架,而数据仓库也基本上是基于Hive的数据仓库。Hive是基于Hadoop的一个数据仓库工具,Hive本身并不提供数据的存储功能,而是使用Hadoop中的HDFS组件实现数据的分布式存储。Hive的主要作用是将HDFS中的结构化的数据映射为一张二维的数据库表,并且提供SQL的查询功能。Hive会将用户的SQL语句通过解释器转换为MapReduce作业提交到Hadoop集群上,由Hadoop监控作业执行过程,然后返回作业执行结果给用户。
数据血缘表示的是数据生产过程中的链路关系。在数据仓库中的数据集合会通过数据的融合、联合、转换、变换等操作,又生成新的数据集合。数据与数据之间会串成一条链路,从而自然的形成一种上下游的依赖关系,这种关系我们称为数据血缘。目前实现Hive数据血缘的方法主要有三种:
第一种是使用Hive的原生API,利用Hive自身提供的事件拦截机制HiveHooks,在Hive任务执行完成之后,获取Hive中的任务执行上下文,同时结合Hive的LineageInfoAPI来解析当前Hive任务的数据血缘关系。这种方案是较为常见的解决方案,在Hadoop生态中的数据治理组件ApacheAtlas中有着广泛的使用。该方案有使用简单、解析准确的优点,并且数据血缘的粒度可达到列级血缘。但是缺点也很明显,利用Hive的Hooks事件会导致数据血缘解析功能与Hive组件之间的强耦合,无法在任意时刻独立的进行数据血缘分析,只有在Hive完成任务之后下才能实现数据血缘分析。
第二种是直接对SQL语句进行解析,将SQL语句进行词法分析、语法分析,把SQL语句转化为AST抽象语法树。再由抽象语法树中的节点,递归分析从而得到数据血缘关系。这种方案克服了第一种方案中耦合性强的缺点,通过单独的对SQL进行解析实现了数据血缘功能和Hive之间的完全解耦。但是这种方案明显增加了数据血缘功能的实现难度,并且由于该方案完全脱离Hive组件,所以解析结果会缺失对Hive上下文的理解,例如:*关键字、${}变量、UDF函数等,所以该方案会缺失部分解析精度和准确性。
第三种是针对MapReduce作业解析,Hive执行的SQL最终会提交为MapReduce作业。通过MapReduce作业日志中的输入输出解析数据血缘关系。该方案兼容性差对于不同的Hadoop版本需要适配不同的解析方案,并且该方案的数据血缘解析粒度只能到达表级。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种基于Hive数据仓库的数据列级血缘处理***,该***在保证数据血缘功能和Hive数据仓库之间的低耦合的前提下,实现了数据血缘解析结果的细粒度和高准确性。
本发明的另一个目的在于提出一种基于Hive数据仓库的数据列级血缘处理方法。
为达到上述目的,本发明一方面实施例提出了一种基于Hive数据仓库的数据列级血缘处理***,包括:
SQL预处理模块,用于对用户输入的SQL信息进行预处理;
SQL解析模块,用于将预处理后的SQL信息解析为具体Hive执行计划;
数据血缘解析模块,用于根据所述具体Hive执行计划,结合Hive执行上下文信息,解析出对应的数据血缘依赖关系;
数据存储模块,用于将所述数据血缘依赖关系,以数据上下游依赖关系的形式存储进入数据库。
本发明实施例的基于Hive数据仓库的数据列级血缘处理***,通过在使用Hive底层的SQL解析工具,实现了在本地对数据血缘的解析,克服了强耦合性的缺点,将数据血缘解析功能与Hive任务执行过程解耦。同时通过使用Hive原生的SQL解析工具与HiveMetastore服务,并且设置元数据信息缓存,解决了对于HiveSQL语法解析准确性差、无法进行元数据信息校验、对Hive上下文理解缺失等问题。该***在保证数据血缘功能和Hive数据仓库之间的低耦合的前提下,实现了数据血缘解析结果的细粒度和高准确性。
另外,根据本发明上述实施例的基于Hive数据仓库的数据列级血缘处理***还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,所述SQL信息包括:SQL文件、SQL字符串、SQL字符流;
所述预处理包括:去除注释、去除换行转义字符、对SQL用分号分割、对SQL语句进行分类。
进一步地,在本发明的一个实施例中,所述SQL解析模块包括:语法树解析单元、生成解析树单元和生成执行计划单元;
所述语法树解析单元,用于将预处理后的SQL信息进行词法解析、语法解析,生成相应的AST抽象语法树;
所述生成解析树单元,用于通过所述AST抽象语法树节点的深度遍历,解析出每个AST抽象语法树节点所包含的查询信息,从而得到SQL信息相应的解析树,并且会填充对应的元数据信息和Hive执行上下文信息;
生成执行计划单元,用于遍历所述解析树每一个节点,读取节点的信息从而生成相应的操作树,并且将所述操作树构建为所述具体Hive执行计划。
进一步地,在本发明的一个实施例中,所述SQL解析模块与元数据信息缓存和HiveMetastore进行元数据信息交互。
进一步地,在本发明的一个实施例中,所述生成解析树单元,具体用于,首先在所述元数据信息缓存中获取元数据信息,如果获取不到再从所述Hive Metastore服务中获取元数据信息,获取到元数据信息后,对所述AST抽象语法树中的节点进行元数据信息的替换,并且对相应的元数据信息进行校验,元数据信息填充校验完成之后输出所述解析树。
进一步地,在本发明的一个实施例中,所述生成执行计划单元,具体用于,将所述解析树转化为包含具体操作类型的操作树,并且结合所述操作树与Hive执行上下文信息,生成逻辑执行计划和物理执行计划,将所述物理执行计划中涉及到的元数据信息提取出来,并且存储到所述元数据信息缓存中,输出所述具体Hive执行计划至所述数据血缘模块处理。
进一步地,在本发明的一个实施例中,所述数据血缘解析模块,具体用于,
在所述SQL信息包括多条SQL语句文件时,判断每条SQL语句的具体Hive执行计划的计划类型;
在所述计划类型为与执行上下文相关的计划时,则提取具体Hive执行计划中设置的信息,并对本地的执行器对象修改信息;
在所述计划类型为与数据血缘相关的执行计划时,则将当前的执行计划与当前的上下文信息合并,再进行数据血缘信息的提取;
若所述计划类型不是与执行上下文相关的执行计划,也不是与数据血缘相关的执行计划时,则会跳过解析处理的过程,处理下一个SQL语句。
进一步地,在本发明的一个实施例中,所述数据血缘信息的提取包括:
依靠所述具体Hive执行计划中的数据依赖提取所述具体Hive执行计划中的数据列血缘关系;
将提取到的数据列血缘关系与列血缘缓存中的血缘关系进行比对合并,得到合并优化后的血缘关系;
依据数据列血缘关系,获取对应的列信息,并且保存在缓存中。
为达到上述目的,本发明另一方面实施例提出了一种基于Hive数据仓库的数据列级血缘处理方法,包括:
对用户输入的SQL信息进行预处理;
将预处理后的SQL信息解析为具体Hive执行计划;
根据所述具体Hive执行计划,结合Hive执行上下文信息,解析出对应的数据血缘依赖关系;
将所述数据血缘依赖关系,以数据上下游依赖关系的形式存储进入数据库。
本发明实施例的基于Hive数据仓库的数据列级血缘处理方法,通过在使用Hive底层的SQL解析工具,实现了在本地对数据血缘的解析,克服了强耦合性的缺点,将数据血缘解析功能与Hive任务执行过程解耦。同时通过使用Hive原生的SQL解析工具与HiveMetastore服务,并且设置元数据信息缓存,解决了对于HiveSQL语法解析准确性差、无法进行元数据信息校验、对Hive上下文理解缺失等问题。该方法在保证数据血缘功能和Hive数据仓库之间的低耦合的前提下,实现了数据血缘解析结果的细粒度和高准确性。
另外,根据本发明上述实施例的基于Hive数据仓库的数据列级血缘处理方法还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,将预处理后的SQL信息解析为具体Hive执行计划进一步包括:
将预处理后的SQL信息进行词法解析、语法解析,生成相应的AST抽象语法树;
通过所述AST抽象语法树节点的深度遍历,解析出每个AST抽象语法树节点所包含的查询信息,从而得到SQL信息相应的解析树,并且会填充对应的元数据信息和Hive执行上下文信息;
遍历所述解析树每一个节点,读取节点的信息从而生成相应的操作树,并且将所述操作树构建为所述具体Hive执行计划。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的基于Hive数据仓库的数据列级血缘处理***结构框架图;
图2为根据本发明一个实施例的SQL解析模块处理流程图;
图3为根据本发明一个实施例的数据血缘解析模块处理流程图;
图4为根据本发明一个实施例的基于Hive数据仓库的数据列级血缘处理方法流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参照附图描述根据本发明实施例提出的基于Hive数据仓库的数据列级血缘处理***及方法。
首先将参照附图描述根据本发明实施例提出的基于Hive数据仓库的数据列级血缘处理***。
图1为根据本发明一个实施例的基于Hive数据仓库的数据列级血缘处理***结构框架图。
如图1所示,该基于Hive数据仓库的数据列级血缘处理***包括:SQL预处理模块、SQL解析模块、数据血缘解析模块和数据存储模块。
SQL预处理模块,用于对用户输入的SQL信息进行预处理。
SQL预处理模块主要是对输入的SQL信息进行简单的预处理,如去除注释、去除换行转义字符、对SQL用分号分割、对SQL语句进行简单的分类等。输入的形式可以包括:SQL文件、SQL字符串、SQL字符流。
SQL解析模块,用于将预处理后的SQL信息解析为具体Hive执行计划。
SQL解析模块是对于Hive的原始流程进行简化重构,该模块能将预处理的SQL信息解析为具体Hive执行计划。
其中,SQL解析模块与元数据信息缓存和Hive Metastore进行元数据信息交互,可以解决本地解析时临时表元数据信息缺失的问题。
SQL解析模块包括:语法树解析单元、生成查询块单元、生成逻辑执行计划单元三个部分。
语法树解析单元,用于将预处理后的SQL信息进行词法解析、语法解析,生成相应的AST抽象语法树。
生成解析树单元,用于通过AST抽象语法树节点的深度遍历,解析出每个AST抽象语法树节点所包含的查询信息,从而得到该SQL信息相应的解析树,并且会填充对应的元数据信息和Hive执行上下文信息。
生成执行计划单元,用于遍历解析树每一个节点,读取节点的信息从而生成相应的操作树,并且将操作树构建为具体Hive执行计划。
数据血缘解析模块,用于根据具体Hive执行计划,结合Hive执行上下文信息,解析出对应的数据血缘依赖关系。
具体地,针对SQL解析模块生成的执行计划,该模块会结合Hive执行上下文,解析出对应的数据血缘依赖关系。
可以理解的是,由执行计划转换为数据血缘的解析方法,解决了临时表导致无效血缘的问题,以及优化了执行计划转换为数据血缘的执行效率。
数据存储模块,用于将数据血缘依赖关系,以数据上下游依赖关系的形式存储进入数据库。
结合实施例及附图对各个模块进行详细说明。
本发明的实施例基于Hive底层对SQL语句的解析工具,以及HiveMetastore所提供的元数据服务,对Hive数据仓库解析SQL的原始流程进行重构与模拟。减少了Hive执行过程中的各种Hooks调用、并发锁的抢占等流程,提高了对SQL解析的执行效率。并且由于本发明使用的是原生Hive底层对SQL语句的解析工具,所以能保证SQL语句解析结果的高准确性,以及列级粒度的数据血缘关系。
在执行SQL解析的过程中,本发明只需和HiveMetastore服务进行元数据信息的交互,完整的SQL解析过程只在本地进行不依赖与Hive集群任务的执行,大大的降低了数据血缘处理***与Hive集群之间的耦合性,从而能够在Hive任务执行之前,实现对数据血缘处理结果的预览。并且通过与HiveMetastore服务进行元数据信息的交互能实现对*关键字、${}变量等语法的安全性、可靠性检测。
在SQL解析模块中,生成解析树单元,具体用于,首先在元数据信息缓存中获取元数据信息,如果获取不到再从Hive Metastore服务中获取元数据信息,获取到元数据信息后,对AST抽象语法树中的节点进行元数据信息的替换,并且对相应的元数据信息进行校验,元数据信息填充校验完成之后输出解析树。生成执行计划单元,具体用于,将解析树转化为包含具体操作类型的操作树,并且结合操作树与Hive执行上下文信息,生成逻辑执行计划和物理执行计划,将物理执行计划中涉及到的元数据信息提取出来,并且存储到元数据信息缓存中,输出具体Hive执行计划至数据血缘模块处理。
图2为根据本发明一个实施例的SQL解析模块处理流程图。如图2所示,SQL解析模块首先会将传入的SQL语句,按照ANTLR4所定义的语法文件进行一个初步的语法解析,输出AST抽象语法树。此时的AST语法树只能分析校验SQL语法的正确,无法理解具体的元数据信息。
下一步,将对AST抽象语法树继续进行解析,该模块会首先在元数据信息缓存中获取,如果获取不到再从HiveMetastore服务中获取元数据信息。获取到元数据信息之后,对AST抽象语法树中的节点进行元数据信息的替换,并且对相应的元数据信息进行校验。元数据信息填充校验完成之后输出解析树。
接下来会将解析树转化为包含具体操作类型的操作树,并且会结合操作树与Hive上下文信息,生成逻辑执行计划和物理执行计划。然后较为关键的步骤是会将物理执行计划中涉及到的元数据信息提取出来,并且存储到元数据信息的缓存中,此步操作是为了提高本地执行元数据信息查询效率,并且可以防止SQL语句中临时表元数据的信息缺失。最后会输出最终的执行计划,给下一步的数据血缘模块处理。
SQL解析模块的伪代码如下:
从物理计划中提取元数据信息的伪代码如下:
数据血缘解析模块,具体用于,
在SQL信息包括多条SQL语句文件时,判断每条SQL语句的具体Hive执行计划的计划类型;
在计划类型为与执行上下文相关的计划时,则提取具体Hive执行计划中设置的信息,并对本地的执行器对象修改信息;
在计划类型为与数据血缘相关的执行计划时,则将当前的执行计划与当前的上下文信息合并,再进行数据血缘信息的提取;
若计划类型不是与执行上下文相关的执行计划,也不是与数据血缘相关的执行计划时,则会跳过解析处理的过程,处理下一个SQL语句。
数据血缘信息的提取包括:
依靠具体Hive执行计划中的数据依赖提取具体Hive执行计划中的数据列血缘关系;
将提取到的数据列血缘关系与列血缘缓存中的血缘关系进行比对合并,得到合并优化后的血缘关系;
依据数据列血缘关系,获取对应的列信息,并且保存在缓存中。
根据上述的SQL解析处理流程可知,最终数据血缘的解析还需要从执行计划中获取。但是SQL解析处理后的执行计划只是针对于单独的SQL语句。如果在执行SQL文件时,需要处理多条SQL语句之间的上下文关系。所以本发明针对处理SQL文件的数据血缘做了特殊的处理和优化,以保证对于存在上下文关联的SQL语句能顺利解析,并且消除了SQL文件执行过程中中间表对最终输出的数据血缘的影响。同时在保证数据血缘解析准确性的前提下,去除了与数据血缘无关的SQL语句,从而提高了程序的执行效率。数据血缘解析方法流程如下图3所示。
数据血缘解析模块首先会对执行计划进行优化处理,执行计划主要划分为三类:与执行上下文相关、涉及到数据血缘相关、其他无关类型。针对与上下文相关的执行计划,程序会提取其中设置的信息,例如:切换当前数据库。并且对本地的执行器对象修改信息,从而保证接下来的SQL解析时能读取到正确的上下文信息。针对与到数据血缘相关的执行计划,程序会将当前的执行计划与当前的上下文信息合并,传入到下一步骤,对其进行血缘信息提取。针对其他无关类型的执行计划,程序会跳过对其解析处理的过程,直接处理下一个SQL语句。
解析优化伪代码:
下一步将数据血缘的信息进行提取,依靠执行计划中的数据依赖提取其中的数据血缘关系。数据依赖中可能存在重复依赖、无效依赖,这都需要除去。之后将提取到的数据列血缘关系与列血缘缓存中的血缘关系进行比对合并,最终得到合并优化后的血缘关系。然后在依据列血缘关系,获取对应的列信息,并且将其保存在缓存中。
血缘信息提取伪代码:
血缘关系合并伪代码:
最终在对全部的SQL语句执行完成之后,将缓存中的数据列血缘关系和数据列信息合并输出,得到最终的数据列级血缘信息。
数据列级血缘信息样例:
根据本发明实施例提出的基于Hive数据仓库的数据列级血缘处理***,通过在使用Hive底层的SQL解析工具,实现了在本地对数据血缘的解析,克服了强耦合性的缺点,将数据血缘解析功能与Hive任务执行过程解耦。同时通过使用Hive原生的SQL解析工具与HiveMetastore服务,并且设置元数据信息缓存,解决了对于HiveSQL语法解析准确性差、无法进行元数据信息校验、对Hive上下文理解缺失等问题。该***在保证数据血缘功能和Hive数据仓库之间的低耦合的前提下,实现了数据血缘解析结果的细粒度和高准确性。
其次参照附图描述根据本发明实施例提出的基于Hive数据仓库的数据列级血缘处理方法。
图4为根据本发明一个实施例的基于Hive数据仓库的数据列级血缘处理方法流程图。
如图4所示,该基于Hive数据仓库的数据列级血缘处理方法包括以下步骤:
S1,对用户输入的SQL信息进行预处理;
S2,将预处理后的SQL信息解析为具体Hive执行计划;
S3,根据具体Hive执行计划,结合Hive执行上下文信息,解析出对应的数据血缘依赖关系;
S4,将数据血缘依赖关系,以数据上下游依赖关系的形式存储进入数据库。
进一步地,在本发明的一个实施例中,将预处理后的SQL信息解析为具体Hive执行计划进一步包括:
将预处理后的SQL信息进行词法解析、语法解析,生成相应的AST抽象语法树;
通过AST抽象语法树节点的深度遍历,解析出每个AST抽象语法树节点所包含的查询信息,从而得到SQL信息相应的解析树,并且会填充对应的元数据信息和Hive执行上下文信息;
遍历解析树每一个节点,读取节点的信息从而生成相应的操作树,并且将操作树构建为具体Hive执行计划。
需要说明的是,前述对基于Hive数据仓库的数据列级血缘处理***实施例的解释说明也适用于该实施例的方法,此处不再赘述。
根据本发明实施例提出的基于Hive数据仓库的数据列级血缘处理方法,通过在使用Hive底层的SQL解析工具,实现了在本地对数据血缘的解析,克服了强耦合性的缺点,将数据血缘解析功能与Hive任务执行过程解耦。同时通过使用Hive原生的SQL解析工具与HiveMetastore服务,并且设置元数据信息缓存,解决了对于HiveSQL语法解析准确性差、无法进行元数据信息校验、对Hive上下文理解缺失等问题。该方法在保证数据血缘功能和Hive数据仓库之间的低耦合的前提下,实现了数据血缘解析结果的细粒度和高准确性。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种基于Hive数据仓库的数据列级血缘处理***,其特征在于,包括:
SQL预处理模块,用于对用户输入的SQL信息进行预处理;
SQL解析模块,用于将预处理后的SQL信息解析为具体Hive执行计划;
数据血缘解析模块,用于根据所述具体Hive执行计划,结合Hive执行上下文信息,解析出对应的数据血缘依赖关系;
数据存储模块,用于将所述数据血缘依赖关系,以数据上下游依赖关系的形式存储进入数据库。
2.根据权利要求1所述的基于Hive数据仓库的数据列级血缘处理***,其特征在于,所述SQL信息包括:SQL文件、SQL字符串、SQL字符流;
所述预处理包括:去除注释、去除换行转义字符、对SQL用分号分割、对SQL语句进行分类。
3.根据权利要求1所述的基于Hive数据仓库的数据列级血缘处理***,其特征在于,所述SQL解析模块包括:语法树解析单元、生成解析树单元和生成执行计划单元;
所述语法树解析单元,用于将预处理后的SQL信息进行词法解析、语法解析,生成相应的AST抽象语法树;
所述生成解析树单元,用于通过所述AST抽象语法树节点的深度遍历,解析出每个AST抽象语法树节点所包含的查询信息,从而得到SQL信息相应的解析树,并且会填充对应的元数据信息和Hive执行上下文信息;
生成执行计划单元,用于遍历所述解析树每一个节点,读取节点的信息从而生成相应的操作树,并且将所述操作树构建为所述具体Hive执行计划。
4.根据权利要求3所述的基于Hive数据仓库的数据列级血缘处理***,其特征在于,所述SQL解析模块与元数据信息缓存和Hive Metastore进行元数据信息交互。
5.根据权利要求4所述的基于Hive数据仓库的数据列级血缘处理***,其特征在于,所述生成解析树单元,具体用于,首先在所述元数据信息缓存中获取元数据信息,如果获取不到再从所述Hive Metastore服务中获取元数据信息,获取到元数据信息后,对所述AST抽象语法树中的节点进行元数据信息的替换,并且对相应的元数据信息进行校验,元数据信息填充校验完成之后输出所述解析树。
6.根据权利要求4所述的基于Hive数据仓库的数据列级血缘处理***,其特征在于,所述生成执行计划单元,具体用于,将所述解析树转化为包含具体操作类型的操作树,并且结合所述操作树与Hive执行上下文信息,生成逻辑执行计划和物理执行计划,将所述物理执行计划中涉及到的元数据信息提取出来,并且存储到所述元数据信息缓存中,输出所述具体Hive执行计划至所述数据血缘模块处理。
7.根据权利要求1所述的基于Hive数据仓库的数据列级血缘处理***,其特征在于,所述数据血缘解析模块,具体用于,
在所述SQL信息包括多条SQL语句文件时,判断每条SQL语句的具体Hive执行计划的计划类型;
在所述计划类型为与执行上下文相关的计划时,则提取具体Hive执行计划中设置的信息,并对本地的执行器对象修改信息;
在所述计划类型为与数据血缘相关的执行计划时,则将当前的执行计划与当前的上下文信息合并,再进行数据血缘信息的提取;
若所述计划类型不是与执行上下文相关的执行计划,也不是与数据血缘相关的执行计划时,则会跳过解析处理的过程,处理下一个SQL语句。
8.根据权利要求7所述的基于Hive数据仓库的数据列级血缘处理***,其特征在于,所述数据血缘信息的提取包括:
依靠所述具体Hive执行计划中的数据依赖提取所述具体Hive执行计划中的数据列血缘关系;
将提取到的数据列血缘关系与列血缘缓存中的血缘关系进行比对合并,得到合并优化后的血缘关系;
依据数据列血缘关系,获取对应的列信息,并且保存在缓存中。
9.一种基于Hive数据仓库的数据列级血缘处理方法,其特征在于,包括以下步骤:
对用户输入的SQL信息进行预处理;
将预处理后的SQL信息解析为具体Hive执行计划;
根据所述具体Hive执行计划,结合Hive执行上下文信息,解析出对应的数据血缘依赖关系;
将所述数据血缘依赖关系,以数据上下游依赖关系的形式存储进入数据库。
10.根据权利要求9所述的基于Hive数据仓库的数据列级血缘处理方法,其特征在于,将预处理后的SQL信息解析为具体Hive执行计划进一步包括:
将预处理后的SQL信息进行词法解析、语法解析,生成相应的AST抽象语法树;
通过所述AST抽象语法树节点的深度遍历,解析出每个AST抽象语法树节点所包含的查询信息,从而得到SQL信息相应的解析树,并且会填充对应的元数据信息和Hive执行上下文信息;
遍历所述解析树每一个节点,读取节点的信息从而生成相应的操作树,并且将所述操作树构建为所述具体Hive执行计划。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010541245.0A CN111813796B (zh) | 2020-06-15 | 2020-06-15 | 基于Hive数据仓库的数据列级血缘处理***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010541245.0A CN111813796B (zh) | 2020-06-15 | 2020-06-15 | 基于Hive数据仓库的数据列级血缘处理***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111813796A true CN111813796A (zh) | 2020-10-23 |
CN111813796B CN111813796B (zh) | 2022-11-18 |
Family
ID=72845112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010541245.0A Active CN111813796B (zh) | 2020-06-15 | 2020-06-15 | 基于Hive数据仓库的数据列级血缘处理***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111813796B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112363713A (zh) * | 2020-11-30 | 2021-02-12 | 杭州玳数科技有限公司 | 一种绑定式的sql血缘解析数据流可视化交互方法 |
CN112860812A (zh) * | 2021-02-09 | 2021-05-28 | 北京百度网讯科技有限公司 | 信息处理方法、装置、设备、存储介质及程序产品 |
CN113326401A (zh) * | 2021-06-16 | 2021-08-31 | 上海哔哩哔哩科技有限公司 | 字段血缘生成方法及*** |
CN113326261A (zh) * | 2021-04-29 | 2021-08-31 | 上海淇馥信息技术有限公司 | 数据血缘关系提取方法、装置及电子设备 |
CN113868253A (zh) * | 2021-09-28 | 2021-12-31 | 中通服创立信息科技有限责任公司 | 一种数据关系捕获及大数据关系树构建方法 |
CN114896584A (zh) * | 2022-07-13 | 2022-08-12 | 杭州比智科技有限公司 | 一种Hive数据权限控制代理层方法及*** |
CN115934855A (zh) * | 2022-11-29 | 2023-04-07 | 广发银行股份有限公司 | 一种全链路字段级血缘解析方法、***、设备及存储介质 |
CN116010438A (zh) * | 2022-12-22 | 2023-04-25 | 北京柏睿数据技术股份有限公司 | 一种数据库操作延迟计算的方法和*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899314A (zh) * | 2015-06-17 | 2015-09-09 | 北京京东尚科信息技术有限公司 | 一种数据仓库的血统分析方法和装置 |
CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
US20170060910A1 (en) * | 2015-08-27 | 2017-03-02 | Infosys Limited | System and method of generating platform-agnostic abstract syntax tree |
CN110555032A (zh) * | 2019-09-09 | 2019-12-10 | 北京搜狐新媒体信息技术有限公司 | 一种基于元数据的数据血缘关系分析方法及*** |
-
2020
- 2020-06-15 CN CN202010541245.0A patent/CN111813796B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899314A (zh) * | 2015-06-17 | 2015-09-09 | 北京京东尚科信息技术有限公司 | 一种数据仓库的血统分析方法和装置 |
US20170060910A1 (en) * | 2015-08-27 | 2017-03-02 | Infosys Limited | System and method of generating platform-agnostic abstract syntax tree |
CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
CN110555032A (zh) * | 2019-09-09 | 2019-12-10 | 北京搜狐新媒体信息技术有限公司 | 一种基于元数据的数据血缘关系分析方法及*** |
Non-Patent Citations (1)
Title |
---|
TAN Z 等: "《A Column-Level Data Lineage Processing System Based on Hive》", 《PROCEEDINGS OF THE 2020 3RD INTERNATIONAL CONFERENCE ON BIG DATA TECHNOLOGIES》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112363713A (zh) * | 2020-11-30 | 2021-02-12 | 杭州玳数科技有限公司 | 一种绑定式的sql血缘解析数据流可视化交互方法 |
CN112363713B (zh) * | 2020-11-30 | 2024-06-11 | 杭州玳数科技有限公司 | 一种绑定式的sql血缘解析数据流可视化交互方法 |
CN112860812A (zh) * | 2021-02-09 | 2021-05-28 | 北京百度网讯科技有限公司 | 信息处理方法、装置、设备、存储介质及程序产品 |
CN112860812B (zh) * | 2021-02-09 | 2023-07-11 | 北京百度网讯科技有限公司 | 在大数据中无侵入确定数据字段级关联关系的方法和装置 |
CN113326261B (zh) * | 2021-04-29 | 2024-03-08 | 奇富数科(上海)科技有限公司 | 数据血缘关系提取方法、装置及电子设备 |
CN113326261A (zh) * | 2021-04-29 | 2021-08-31 | 上海淇馥信息技术有限公司 | 数据血缘关系提取方法、装置及电子设备 |
CN113326401A (zh) * | 2021-06-16 | 2021-08-31 | 上海哔哩哔哩科技有限公司 | 字段血缘生成方法及*** |
CN113326401B (zh) * | 2021-06-16 | 2023-01-20 | 上海哔哩哔哩科技有限公司 | 字段血缘生成方法及*** |
CN113868253A (zh) * | 2021-09-28 | 2021-12-31 | 中通服创立信息科技有限责任公司 | 一种数据关系捕获及大数据关系树构建方法 |
CN113868253B (zh) * | 2021-09-28 | 2024-04-23 | 中通服创立信息科技有限责任公司 | 一种数据关系捕获及大数据关系树构建方法 |
CN114896584A (zh) * | 2022-07-13 | 2022-08-12 | 杭州比智科技有限公司 | 一种Hive数据权限控制代理层方法及*** |
CN114896584B (zh) * | 2022-07-13 | 2022-10-11 | 杭州比智科技有限公司 | 一种Hive数据权限控制代理层方法及*** |
CN115934855A (zh) * | 2022-11-29 | 2023-04-07 | 广发银行股份有限公司 | 一种全链路字段级血缘解析方法、***、设备及存储介质 |
CN115934855B (zh) * | 2022-11-29 | 2023-08-25 | 广发银行股份有限公司 | 一种全链路字段级血缘解析方法、***、设备及存储介质 |
CN116010438B (zh) * | 2022-12-22 | 2023-11-28 | 北京柏睿数据技术股份有限公司 | 一种数据库操作延迟计算的方法和*** |
CN116010438A (zh) * | 2022-12-22 | 2023-04-25 | 北京柏睿数据技术股份有限公司 | 一种数据库操作延迟计算的方法和*** |
Also Published As
Publication number | Publication date |
---|---|
CN111813796B (zh) | 2022-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111813796B (zh) | 基于Hive数据仓库的数据列级血缘处理***及方法 | |
Tufano et al. | On learning meaningful code changes via neural machine translation | |
CN111309757B (zh) | 一种HBase的SQL解释器和优化方法 | |
CN109614432B (zh) | 一种基于语法分析的获取数据血缘关系的***及方法 | |
Lin et al. | Full-text indexing for optimizing selection operations in large-scale data analytics | |
Thomas et al. | Mining unstructured software repositories | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
CN107818181A (zh) | 基于Plcient交互式引擎的索引方法及其*** | |
Al Mahruqi et al. | A semi-automated framework for migrating web applications from SQL to document oriented NoSQL database. | |
Jiang et al. | Grammar-aware parallelization for scalable xpath querying | |
Chen et al. | Interactive cross-language code retrieval with auto-encoders | |
CN112948419A (zh) | 查询语句处理方法及装置 | |
CN113032371A (zh) | 数据库语法分析方法、装置和计算机设备 | |
CN110580170A (zh) | 软件性能风险的识别方法及装置 | |
CN116955393A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
Hughes et al. | Polish parsers, step by step | |
CN114461454A (zh) | 数据恢复方法、装置、存储介质及电子设备 | |
Purve et al. | Stack and queue based parser approach for parsing expression grammar | |
Chen et al. | Pipelined XPath query based on cost optimization | |
CN106484706B (zh) | 用于分布式***的执行过程化sql语句的方法和设备 | |
CN116560667B (zh) | 一种基于预编译延迟执行的拆分调度***及方法 | |
Ren et al. | An executable specification of map-join-reduce using haskell | |
Zhang | PMT: A procedure migration tool from oracle to postgreSQL | |
CN113626465B (zh) | 数据库及在postgresql数据库中实现会话级变量的方法 | |
Cao et al. | ASTormer: An AST Structure-aware Transformer Decoder for Text-to-SQL |
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 |