CN116775037A - 一种数据血缘关系的抽取方法、装置、设备及存储介质 - Google Patents
一种数据血缘关系的抽取方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116775037A CN116775037A CN202310742251.6A CN202310742251A CN116775037A CN 116775037 A CN116775037 A CN 116775037A CN 202310742251 A CN202310742251 A CN 202310742251A CN 116775037 A CN116775037 A CN 116775037A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- tree
- grammar tree
- development project
- 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
- 239000008280 blood Substances 0.000 title claims abstract description 62
- 210000004369 blood Anatomy 0.000 title claims abstract description 62
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000011161 development Methods 0.000 claims abstract description 128
- 238000005516 engineering process Methods 0.000 claims abstract description 15
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 6
- 238000012545 processing Methods 0.000 claims description 27
- 238000000605 extraction Methods 0.000 claims description 13
- 238000005192 partition Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 12
- 238000000638 solvent extraction Methods 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 5
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 239000000284 extract Substances 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 11
- 230000008439 repair process Effects 0.000 description 9
- 238000013523 data management Methods 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000003908 quality control method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种数据血缘关系的抽取方法、装置、设备及存储介质,属于大数据技术领域。获取预设的逻辑语法树模块,并将逻辑语法树模块嵌入到开发项目中,从开发项目的代码中获取数据执行计划,通过逻辑语法树模块解析数据执行计划,生成逻辑语法树,遍历逻辑语法树,识别根节点和叶子节点,分别获取根节点的信息和叶子节点的信息,并查找叶子节点的上下游关联关系,基于根节点的信息、叶子节点的信息以及上下游关联关系构建数据血缘字典,并存储数据血缘字典。此外,本申请还涉及区块链技术,开发项目的代码可存储于区块链中。本申请通过保存逻辑语法树方式,保存各个执行阶段的数据,然后通过逻辑语法树提取分析数据血缘,可以提升数据治理效率。
Description
技术领域
本申请属于大数据技术领域,具体涉及一种数据血缘关系的抽取方法、装置、设备及存储介质。
背景技术
数据血缘可以帮助数据生产者以及消费者更好地对数据进行追根溯源,提升数据运维、数据治理的效率。在没有使用数据血缘关系进行数据管理时,数据生产者和消费者难以追踪数据的来源和去向,因此在数据出现错误或异常时,难以快速定位问题和采取措施进行修复,会浪费大量的时间和精力。此外,数据治理也会面临很大的挑战,因为无法确保数据的准确性、完整性和安全性,也无法监控数据的使用情况和流向,从而影响企业的业务运营和决策。
发明内容
本申请实施例的目的在于提出一种数据血缘关系的抽取方法、装置、计算机设备及存储介质,以解决现有数据管理方案存在的数据的来源和去向难以追踪,无法确保数据的准确性、完整性和安全性的技术问题。
为了解决上述技术问题,本申请实施例提供一种数据血缘关系的抽取方法,采用了如下所述的技术方案:
一种数据血缘关系的抽取方法,包括:
从通用工具类库中获取预设的逻辑语法树模块,并将所述逻辑语法树模块嵌入到开发项目中;
读取所述开发项目的代码,并从所述开发项目的代码中获取数据执行计划;
通过所述逻辑语法树模块解析所述数据执行计划,生成所述开发项目的逻辑语法树;
遍历所述开发项目的逻辑语法树,识别所述逻辑语法树的根节点和叶子节点;
分别获取所述根节点的字段信息和所述叶子节点的字段信息,查找所述叶子节点的上下游关联关系;
基于所述根节点的字段信息、所述叶子节点的字段信息以及所述上下游关联关系构建数据血缘字典,并存储所述数据血缘字典。
进一步地,在所述从通用工具类库中获取预设的逻辑语法树模块,并将所述逻辑语法树模块嵌入到开发项目中之前,还包括:
获取所述开发项目的开发文档和需求文档;
在所述开发项目的开发文档中查询所述开发项目的代码结构和技术栈;
分析所述需求文档,获取所述开发项目的数据处理需求;
根据所述所述开发项目的代码结构、技术栈和数据处理需求生成所述逻辑语法树模块的代码;
在所述通用工具类库中嵌入所述逻辑语法树模块的代码。
进一步地,所述在所述通用工具类库中嵌入所述逻辑语法树模块的代码,具体包括:
获取所述通用工具类库的源代码;
通过所述逻辑语法树模块的代码对所述通用工具类库的源代码进行修改,生成所述逻辑语法树模块。
进一步地,在所述通过所述逻辑语法树模块的代码对所述通用工具类库的源代码进行修改,生成所述逻辑语法树模块之后,还包括:
将修改后的所述通用工具类库的源代码进行打包操作,生成jar包;
将所述jar包发布到公共组件库。
进一步地,在所述通过所述逻辑语法树模块解析所述数据执行计划,生成所述开发项目的逻辑语法树之后,还包括:
将所述开发项目的逻辑语法树保存到Hive表中;
对所述Hive表进行分区,其中,所述Hive表的分区至少包括表名存储区、逻辑语法树字符串存储区、创建时间存储区。
进一步地,所述将所述开发项目的逻辑语法树保存到Hive表中,具体包括:
将所述开发项目的逻辑语法树转化成字符串形式;
创建一个空白的Hive表;
将字符串形式的所述开发项目的逻辑语法树保存到空白的所述Hive表中。
进一步地,所述遍历所述开发项目的逻辑语法树,识别所述逻辑语法树的根节点和叶子节点,具体包括:
获取预先定义的递归函数,并通过所述递归函数处理所述逻辑语法树的树节点,识别所述树节点中的根节点;
从所述逻辑语法树的根节点开始遍历所述逻辑语法树,识别所述逻辑语法树的所有叶子节点;
输出所述所述逻辑语法树的根节点和所有叶子节点。
为了解决上述技术问题,本申请实施例还提供一种数据血缘关系的抽取装置,采用了如下所述的技术方案:
一种数据血缘关系的抽取装置,包括:
语法树嵌入模块,用于从通用工具类库中获取预设的逻辑语法树模块,并将所述逻辑语法树模块嵌入到开发项目中;
代码读取模块,用于读取所述开发项目的代码,并从所述开发项目的代码中获取数据执行计划;
计划执行模块,用于通过所述逻辑语法树模块解析所述数据执行计划,生成所述开发项目的逻辑语法树;
语法树遍历模块,用于遍历所述开发项目的逻辑语法树,识别所述逻辑语法树的根节点和叶子节点;
信息查找模块,用于分别获取所述根节点的字段信息和所述叶子节点的字段信息,查找所述叶子节点的上下游关联关系;
血缘构建模块,用于基于所述根节点的字段信息、所述叶子节点的字段信息以及所述上下游关联关系构建数据血缘字典,并存储所述数据血缘字典。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如上述任一项所述的数据血缘关系的抽取方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上述中任一项所述的数据血缘关系的抽取方法的步骤。
与现有技术相比,本申请实施例主要有以下有益效果:
本申请公开一种数据血缘关系的抽取方法、装置、设备及存储介质,属于大数据技术领域。从通用工具类库中获取预设的逻辑语法树模块,并将逻辑语法树模块嵌入到开发项目中,读取开发项目的代码,并从开发项目的代码中获取数据执行计划,通过逻辑语法树模块解析数据执行计划,生成开发项目的逻辑语法树,遍历开发项目的逻辑语法树,识别逻辑语法树的根节点和叶子节点,分别获取根节点的字段信息和叶子节点的字段信息,查找叶子节点的上下游关联关系,基于根节点的字段信息、叶子节点的字段信息以及上下游关联关系构建数据血缘字典,并存储数据血缘字典。本申请通过保存逻辑语法树方式,保存各个执行阶段的数据,然后通过逻辑语法树提取分析数据血缘,方便追踪数据的来源和去向,以及快速定位问题和采取措施进行数据修复,提升数据治理效率。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请可以应用于其中的示例性***架构图;
图2示出了根据本申请的数据血缘关系的抽取方法的一个实施例的流程图;
图3示出了根据本申请的数据血缘关系的抽取装置的一个实施例的结构示意图;
图4示出了根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
如图1所示,***架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
需要说明的是,本申请实施例所提供的数据血缘关系的抽取方法一般由服务器执行,相应地,数据血缘关系的抽取装置一般设置于服务器中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的数据血缘关系的抽取方法的一个实施例的流程图。本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互***、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
在没有使用数据血缘关系进行数据管理时,数据生产者和消费者难以追踪数据的来源和去向,因此在数据出现错误或异常时,难以快速定位问题和采取措施进行修复,会浪费大量的时间和精力。此外,数据治理也会面临很大的挑战,因为无法确保数据的准确性、完整性和安全性,也无法监控数据的使用情况和流向,从而影响企业的业务运营和决策。
本申请公开一种数据血缘关系的抽取方法、装置、设备及存储介质,属于大数据技术领域。本申请通过保存逻辑语法树方式,保存各个执行阶段的数据,然后通过逻辑语法树提取分析数据血缘,方便追踪数据的来源和去向,以及快速定位问题和采取措施进行数据修复,提升数据治理效率。
所述的数据血缘关系的抽取方法,包括以下步骤:
S201,从通用工具类库中获取预设的逻辑语法树模块,并将逻辑语法树模块嵌入到开发项目中。
在本实施例中,通用工具类库为wheels项目,wheels项目指的是一个开发中使用的通用工具类库,可以提供一些常用的工具类和函数,帮助开发人员更快地开发出高质量的代码。其中,嵌入逻辑语法树模块的工作是在wheels项目中实现的,具体来说,是通过修改wheels项目的源代码,在其中添加逻辑语法树模块的实现。
进一步地,在从通用工具类库中获取预设的逻辑语法树模块,并将逻辑语法树模块嵌入到开发项目中之前,还包括:
获取开发项目的开发文档和需求文档;
在开发项目的开发文档中查询开发项目的代码结构和技术栈;
分析需求文档,获取开发项目的数据处理需求;
根据开发项目的代码结构、技术栈和数据处理需求生成逻辑语法树模块的代码;
在通用工具类库中嵌入逻辑语法树模块的代码。
在上述实施例中,在wheels项目中生成逻辑语法树模块需要了解项目代码结构和相关技术栈,并分析项目的数据处理需求,以便在wheels项目中创建一个新的模块或者修改已有的模块,用于生成逻辑语法树模块。
进一步地,在通用工具类库中嵌入逻辑语法树模块的代码,具体包括:
获取通用工具类库的源代码;
通过逻辑语法树模块的代码对通用工具类库的源代码进行修改,生成逻辑语法树模块。
具体来说,是开发项目的代码结构、技术栈和数据处理需求生成逻辑语法树模块对应的代码,然后获取wheels项目的源代码,基于公共的逻辑语法树保存方法将逻辑语法树模块的代码嵌入到通用工具类库的源代码中,生成逻辑语法树模块,并对保存逻辑语法树的代码进行单元测试,确保其正确性。
在wheels项目的源代码中加入逻辑语法树保存的逻辑,具体实现可以采用AOP(面向切面编程)的方式,在数据处理过程中自动进行保存。
进一步地,在通过逻辑语法树模块的代码对通用工具类库的源代码进行修改,生成逻辑语法树模块之后,还包括:
将修改后的通用工具类库的源代码进行打包操作,生成jar包;
将jar包发布到公共组件库。
在本实施例中,公共组件库为Maven库,Maven是一个Java项目的自动化构建工具,它能够帮助管理项目的构建、报告和文档化等工作。Maven通过中央仓库和各种本地和远程仓库来管理Java项目的依赖关系,这些仓库都存储在Maven库中。Maven库通常指的是中央仓库,是Maven自带的一个仓库,里面包含了大量常用的Java依赖库,开发人员可以直接从中央仓库中下载所需的依赖库。除了中央仓库外,还可以建立自己的私有仓库,存储自己的依赖库。
具体来说,可以将修改后的wheels项目的源代码进行打包操作,生成jar包,将jar包发布到Maven库,供其他项目使用。
需要说明的是,如果仅仅是提供逻辑语法树模块,那么可以只将该模块打包成jar包。但是如果需要提供完整的wheels项目,包括逻辑语法树模块和其他功能模块,也可以将整个项目打包成jar包。
在本申请一种具体的实施例中,要在wheels项目中添加逻辑语法树模块,可以按照以下步骤进行:下载wheels项目的源代码,并使用开发环境打开,在源代码中添加逻辑语法树模块的代码,编译wheels项目源代码,并生成jar包,将生成的jar包上传到Maven仓库,以便其他项目可以引用该模块。具体的添加逻辑语法树模块的代码会根据具体的实现方式而有所不同,需要参考实际项目的实现文档或代码库。
在上述实施例中,保存逻辑语法树的方法作为一个公共的API,供各个数据开发者在需要时进行调用,同时将其保存到hive表中可以保证数据的持久性和查询的方便性。将修改后的wheels项目发布到maven库也,可以使得其他开发者方便地引入和使用这个项目,并减少重复wheels项目开发的情况出现。
在wheels项目中提供公共的保存逻辑语法树的方法可以使得代码复用和维护更加容易。这个方法可以在多个项目中使用,从而避免了代码重复的问题。此外,如果在保存逻辑语法树的过程中需要做一些公共的处理,例如时间分区、数据格式转换等,可以在这个方法中实现,以确保一致性。最后,对于其他开发人员来说,这个方法的存在也可以提高项目的可读性和易用性,减少代码出错的风险。
S202,读取开发项目的代码,并从开发项目的代码中获取数据执行计划。
在本实施例中,服务器在将逻辑语法树模块嵌入到开发项目后,按照设定的时间周期定期读取数据进行数据分析,时间周期可以根据时间需求设定,如1天、2天、7天等等。服务器在***时间到达设定的时间周期时,读取开发项目的代码,并从开发项目的代码中获取数据执行计划,以便通过解析数据执行计划来生成开发项目的逻辑语法树。
在本实施例中,数据血缘关系的抽取方法运行于其上的电子设备(例如图1所示的服务器)可以通过有线连接方式或者无线连接方式读取或接收各种指令和数据。需要指出的是,上述无线连接方式可以包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
S203,通过逻辑语法树模块解析数据执行计划,生成开发项目的逻辑语法树。
在本实施例中,通过逻辑语法树模块解析数据执行计划,数据执行计划解析完成后自动生成该开发项目对应的逻辑语法树。
以Spark SQL项目为例,通过DataFrame获取Spark SQL执行计划对应的逻辑语法树df.queryExecution.executedPlan.numberedTreeString,并将逻辑语法树保存到hive的dwd_meta_logic_tree表。
DataFrame是Apache Spark中的一个概念,是一种类似于表格的数据结构,可以进行结构化的数据处理。DataFrame可以通过读取数据源(例如:CSV、JSON、Parquet等格式)来创建,也可以通过转换已有的RDD、Hive表等数据结构得到。DataFrame支持多种数据操作,例如:过滤、聚合、排序、分组等。在Spark SQL中,DataFrame还可以被用作Spark SQL查询的结果集。
进一步地,在通过逻辑语法树模块解析数据执行计划,生成开发项目的逻辑语法树之后,还包括:
将开发项目的逻辑语法树保存到Hive表中;
对Hive表进行分区,其中,Hive表的分区至少包括表名存储区、逻辑语法树字符串存储区、创建时间存储区。
在本实施例中,将开发项目的逻辑语法树转化成字符串形式,并将发项目的逻辑语法树保存到预设的Hive表中进行存储,然后对Hive表进行分区,其中,Hive表的分区至少包括表名存储区、逻辑语法树字符串存储区、创建时间存储区。
将逻辑语法树保存到指定的Hive表可以使得血缘关系的查询和管理更加方便。Hive是一个建立在Hadoop之上的数据仓库***,支持SQL查询,并且可以管理大规模的数据。在Hive中保存逻辑语法树可以充分利用Hive的优势,通过SQL查询和管理血缘关系,实现对数据流的追踪和监控,同时还可以与其他Hive表进行关联查询,更加灵活地分析和处理数据。此外,Hive还支持多种数据格式和存储方式,可以根据实际需求选择适合的存储方式和格式,如ORC、Parquet等,提高数据的读取和查询效率。
将逻辑语法树保存到指定的Hive表中有以下好处:
数据血缘关系的抽取:保存逻辑语法树可以抽取数据血缘关系,即了解数据的来源和影响路径,方便数据管理和维护。
数据质量控制:通过逻辑语法树,可以清晰地了解到数据的处理过程和步骤,便于监控和控制数据质量。
性能优化:保存逻辑语法树可以深入了解SQL查询的执行计划和优化效果,进而优化查询性能。
数据安全性:通过保存逻辑语法树,可以实现对数据的追踪和溯源,确保数据的安全性和完整性。
在保存逻辑语法树到Hive表之后,还需要建立表的分区,以避免数据量过大导致查询性能下降,在本申请具体的实施例中,除了设置表名存储区、逻辑语法树字符串存储区以外,还可以创建时间存储区,以便于根据数据创建时间来实现数据查询和管理。
在Hive表中,数据是按照表的分区进行存储的。对于每个分区,Hive会将其对应的数据存储在指定的目录下。在将逻辑语法树保存到指定的Hive表中,并建立表分区之后,逻辑语法树数据会按照分区字段的值,并自动存储到相应的分区目录下。例如,如果表分区按照日期字段进行分区,那么逻辑语法树数据就会按照日期的不同值自动存储到不同的日期分区目录下,这样可以方便地对数据进行查询和管理。
进一步地,将开发项目的逻辑语法树保存到Hive表中,具体包括:
将开发项目的逻辑语法树转化成字符串形式;
创建一个空白的Hive表;
将字符串形式的开发项目的逻辑语法树保存到空白的Hive表中。
在本实施例中,通过将开发项目的逻辑语法树转化成字符串形式,并创建一个空白的Hive表,将字符串形式的开发项目的逻辑语法树保存到空白的Hive表中。
在本申请一种具体的实施例中,对于Spark SQL项目,可以通过DataFrame的queryExecution属性来获取逻辑执行计划,生成对应的逻辑语法树,然后通过执行计划的numberedTreeString属性来获取逻辑语法树的字符串形式,创建一个Hive表,使用SparkSQL的insertInto方法将逻辑语法树字符串保存到Hive表中,逻辑语法树就会被保存到指定的Hive表中,供后续的数据血缘关系抽取使用。
S204,遍历开发项目的逻辑语法树,识别逻辑语法树的根节点和叶子节点。
在本实施例中,在遍历逻辑语法树时,根据逻辑语法树的特性和树节点的关系,确定其中根节点和叶子节点。例如,在数据血缘关系的抽取中,需要识别哪些节点是输入数据源的叶子节点,哪些节点是输出结果的根节点,以便建立数据血缘关系。
进一步地,遍历开发项目的逻辑语法树,识别逻辑语法树的根节点和叶子节点,具体包括:
获取预先定义的递归函数,并通过递归函数处理逻辑语法树的树节点,识别树节点中的根节点;
从逻辑语法树的根节点开始遍历逻辑语法树,识别逻辑语法树的所有叶子节点;
输出逻辑语法树的根节点和所有叶子节点。
在本实施例中,可以通过深度优先遍历(DFS)方法遍历开发项目的逻辑语法树,识别逻辑语法树的根节点和叶子节点,获取预先定义的递归函数,并通过递归函数处理逻辑语法树的树节点,识别树节点中的根节点,从逻辑语法树的根节点开始遍历逻辑语法树,识别逻辑语法树的所有叶子节点,输出逻辑语法树的根节点和所有叶子节点。
S205,分别获取根节点的字段信息和叶子节点的字段信息,查找叶子节点的上下游关联关系。
在本实施例中,遍历逻辑语法树的所有节点,找到所有的根节点和叶子节点,对于每个根节点,获取其表名和所有字段名,并记录在一个根节点数据列表中,对于每个叶子节点,获取其表名和所有字段名,并分析其输入数据源和输出数据源,找到输入数据源中的所有字段和输出数据源中的所有字段,并记录在一个叶子节点数据列表中。
S206,基于根节点的字段信息、叶子节点的字段信息以及上下游关联关系构建数据血缘字典,并存储数据血缘字典。
在本实施例中,根据根节点数据列表和叶子节点数据列表构建数据血缘字典,并存储数据血缘字典,方便追踪数据的来源和去向,以及快速定位问题和采取措施进行数据修复。
在本实施例中,逻辑语法树被用作数据处理过程中各个计算阶段的血缘关系记录器,每个计算阶段都将逻辑语法树存储在一个持久化的数据存储中,以便在之后的分析中使用,可以帮助数据生产者和消费者更好地理解数据的来源、处理过程和质量,从而提高数据的可信度和可用性。
在分析血缘关系时,可以使用这些逻辑语法树来追踪每个数据项的来源和处理过程。例如,可以使用逻辑语法树来查找某个数据项是从哪个数据源中提取而来,以及在数据处理过程中经历了哪些计算阶段,通过这些信息,可以更好地理解数据的质量和可靠性,从而更好地控制数据的质量和可用性。
上述一种数据血缘关系的抽取方法还方便进行数据血缘的自动化管理,通过逻辑语法树,可以自动识别和记录数据之间的血缘关系,而无需手动干预,这大大提高了数据治理效率,减少了人为错误的风险。
在上述实施例中,本申请公开一种数据血缘关系的抽取方法,属于大数据技术领域。从通用工具类库中获取预设的逻辑语法树模块,并将逻辑语法树模块嵌入到开发项目中,读取开发项目的代码,并从开发项目的代码中获取数据执行计划,通过逻辑语法树模块解析数据执行计划,生成开发项目的逻辑语法树,遍历开发项目的逻辑语法树,识别逻辑语法树的根节点和叶子节点,分别获取根节点的字段信息和叶子节点的字段信息,查找叶子节点的上下游关联关系,基于根节点的字段信息、叶子节点的字段信息以及上下游关联关系构建数据血缘字典,并存储数据血缘字典。本申请通过保存逻辑语法树方式,保存各个执行阶段的数据,然后通过逻辑语法树提取分析数据血缘,方便追踪数据的来源和去向,以及快速定位问题和采取措施进行数据修复,提升数据治理效率。
需要强调的是,为进一步保证上述开发项目的代码的私密和安全性,上述开发项目的代码还可以存储于一区块链的节点中。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
进一步参考图3,作为对上述图2所示方法的实现,本申请提供了一种数据血缘关系的抽取装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图3所示,本实施例所述的数据血缘关系的抽取装置300包括:
语法树嵌入模块301,用于从通用工具类库中获取预设的逻辑语法树模块,并将逻辑语法树模块嵌入到开发项目中;
代码读取模块302,用于读取开发项目的代码,并从开发项目的代码中获取数据执行计划;
计划执行模块303,用于通过逻辑语法树模块解析数据执行计划,生成开发项目的逻辑语法树;
语法树遍历模块304,用于遍历开发项目的逻辑语法树,识别逻辑语法树的根节点和叶子节点;
信息查找模块305,用于分别获取根节点的字段信息和叶子节点的字段信息,查找叶子节点的上下游关联关系;
血缘构建模块306,用于基于根节点的字段信息、叶子节点的字段信息以及上下游关联关系构建数据血缘字典,并存储数据血缘字典。
进一步地,数据血缘关系的抽取装置300还包括:
开发文档获取模块,用于获取开发项目的开发文档和需求文档;
开发文档查询模块,用于在开发项目的开发文档中查询开发项目的代码结构和技术栈;
需求分析模块,用于分析需求文档,获取开发项目的数据处理需求;
语法树代码模块,用于根据开发项目的代码结构、技术栈和数据处理需求生成逻辑语法树模块的代码;
代码嵌入模块,用于在通用工具类库中嵌入逻辑语法树模块的代码。
进一步地,代码嵌入模块具体包括:
源代码获取单元,用于获取通用工具类库的源代码;
代码嵌入单元,用于通过逻辑语法树模块的代码对通用工具类库的源代码进行修改,生成逻辑语法树模块。
进一步地,数据血缘关系的抽取装置300还包括:
代码打包模块,用于将修改后的通用工具类库的源代码进行打包操作,生成jar包;
包发布模块,用于将jar包发布到公共组件库。
进一步地,数据血缘关系的抽取装置300还包括:
语法树保存模块,用于将开发项目的逻辑语法树保存到Hive表中;
表分区模块,用于对Hive表进行分区,其中,Hive表的分区至少包括表名存储区、逻辑语法树字符串存储区、创建时间存储区。
进一步地,语法树保存模块具体包括:
字符串转换单元,用于将开发项目的逻辑语法树转化成字符串形式;
表创建单元,用于创建一个空白的Hive表;
语法树保存单元,用于将字符串形式的开发项目的逻辑语法树保存到空白的Hive表中。
进一步地,语法树遍历模块304具体包括:
根节点识别单元,用于获取预先定义的递归函数,并通过递归函数处理逻辑语法树的树节点,识别树节点中的根节点;
叶子节点识别单元,用于从逻辑语法树的根节点开始遍历逻辑语法树,识别逻辑语法树的所有叶子节点;
节点输出单元,用于输出逻辑语法树的根节点和所有叶子节点。
在上述实施例中,本申请公开一种数据血缘关系的抽取装置,属于大数据技术领域。从通用工具类库中获取预设的逻辑语法树模块,并将逻辑语法树模块嵌入到开发项目中,读取开发项目的代码,并从开发项目的代码中获取数据执行计划,通过逻辑语法树模块解析数据执行计划,生成开发项目的逻辑语法树,遍历开发项目的逻辑语法树,识别逻辑语法树的根节点和叶子节点,分别获取根节点的字段信息和叶子节点的字段信息,查找叶子节点的上下游关联关系,基于根节点的字段信息、叶子节点的字段信息以及上下游关联关系构建数据血缘字典,并存储数据血缘字典。本申请通过保存逻辑语法树方式,保存各个执行阶段的数据,然后通过逻辑语法树提取分析数据血缘,方便追踪数据的来源和去向,以及快速定位问题和采取措施进行数据修复,提升数据治理效率。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
所述计算机设备4包括通过***总线相互通信连接存储器41、处理器42、网络接口43。需要指出的是,图中仅示出了具有组件41-43的计算机设备4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述计算机设备4的内部存储单元,例如该计算机设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述计算机设备4的外部存储设备,例如该计算机设备4上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。当然,所述存储器41还可以既包括所述计算机设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述计算机设备4的操作***和各类应用软件,例如数据血缘关系的抽取方法的计算机可读指令等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器42在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述计算机设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的计算机可读指令或者处理数据,例如运行所述数据血缘关系的抽取方法的计算机可读指令。
所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述计算机设备4与其他电子设备之间建立通信连接。
在本实施例中,本申请公开一种计算机设备,属于大数据技术领域。从通用工具类库中获取预设的逻辑语法树模块,并将逻辑语法树模块嵌入到开发项目中,读取开发项目的代码,并从开发项目的代码中获取数据执行计划,通过逻辑语法树模块解析数据执行计划,生成开发项目的逻辑语法树,遍历开发项目的逻辑语法树,识别逻辑语法树的根节点和叶子节点,分别获取根节点的字段信息和叶子节点的字段信息,查找叶子节点的上下游关联关系,基于根节点的字段信息、叶子节点的字段信息以及上下游关联关系构建数据血缘字典,并存储数据血缘字典。本申请通过保存逻辑语法树方式,保存各个执行阶段的数据,然后通过逻辑语法树提取分析数据血缘,方便追踪数据的来源和去向,以及快速定位问题和采取措施进行数据修复,提升数据治理效率。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的数据血缘关系的抽取方法的步骤。
在本实施例中,本申请公开一种存储介质,属于大数据技术领域。从通用工具类库中获取预设的逻辑语法树模块,并将逻辑语法树模块嵌入到开发项目中,读取开发项目的代码,并从开发项目的代码中获取数据执行计划,通过逻辑语法树模块解析数据执行计划,生成开发项目的逻辑语法树,遍历开发项目的逻辑语法树,识别逻辑语法树的根节点和叶子节点,分别获取根节点的字段信息和叶子节点的字段信息,查找叶子节点的上下游关联关系,基于根节点的字段信息、叶子节点的字段信息以及上下游关联关系构建数据血缘字典,并存储数据血缘字典。本申请通过保存逻辑语法树方式,保存各个执行阶段的数据,然后通过逻辑语法树提取分析数据血缘,方便追踪数据的来源和去向,以及快速定位问题和采取措施进行数据修复,提升数据治理效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
本申请可用于众多通用或专用的计算机***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。
Claims (10)
1.一种数据血缘关系的抽取方法,其特征在于,包括:
从通用工具类库中获取预设的逻辑语法树模块,并将所述逻辑语法树模块嵌入到开发项目中;
读取所述开发项目的代码,并从所述开发项目的代码中获取数据执行计划;
通过所述逻辑语法树模块解析所述数据执行计划,生成所述开发项目的逻辑语法树;
遍历所述开发项目的逻辑语法树,识别所述逻辑语法树的根节点和叶子节点;
分别获取所述根节点的字段信息和所述叶子节点的字段信息,查找所述叶子节点的上下游关联关系;
基于所述根节点的字段信息、所述叶子节点的字段信息以及所述上下游关联关系构建数据血缘字典,并存储所述数据血缘字典。
2.如权利要求1所述的数据血缘关系的抽取方法,其特征在于,在所述从通用工具类库中获取预设的逻辑语法树模块,并将所述逻辑语法树模块嵌入到开发项目中之前,还包括:
获取所述开发项目的开发文档和需求文档;
在所述开发项目的开发文档中查询所述开发项目的代码结构和技术栈;
分析所述需求文档,获取所述开发项目的数据处理需求;
根据所述所述开发项目的代码结构、技术栈和数据处理需求生成所述逻辑语法树模块的代码;
在所述通用工具类库中嵌入所述逻辑语法树模块的代码。
3.如权利要求2所述的数据血缘关系的抽取方法,其特征在于,所述在所述通用工具类库中嵌入所述逻辑语法树模块的代码,具体包括:
获取所述通用工具类库的源代码;
通过所述逻辑语法树模块的代码对所述通用工具类库的源代码进行修改,生成所述逻辑语法树模块。
4.如权利要求3所述的数据血缘关系的抽取方法,其特征在于,在所述通过所述逻辑语法树模块的代码对所述通用工具类库的源代码进行修改,生成所述逻辑语法树模块之后,还包括:
将修改后的所述通用工具类库的源代码进行打包操作,生成jar包;
将所述jar包发布到公共组件库。
5.如权利要求1至4任意一项所述的数据血缘关系的抽取方法,其特征在于,在所述通过所述逻辑语法树模块解析所述数据执行计划,生成所述开发项目的逻辑语法树之后,还包括:
将所述开发项目的逻辑语法树保存到Hive表中;
对所述Hive表进行分区,其中,所述Hive表的分区至少包括表名存储区、逻辑语法树字符串存储区、创建时间存储区。
6.如权利要求5所述的数据血缘关系的抽取方法,其特征在于,所述将所述开发项目的逻辑语法树保存到Hive表中,具体包括:
将所述开发项目的逻辑语法树转化成字符串形式;
创建一个空白的Hive表;
将字符串形式的所述开发项目的逻辑语法树保存到空白的所述Hive表中。
7.如权利要求5所述的数据血缘关系的抽取方法,其特征在于,所述遍历所述开发项目的逻辑语法树,识别所述逻辑语法树的根节点和叶子节点,具体包括:
获取预先定义的递归函数,并通过所述递归函数处理所述逻辑语法树的树节点,识别所述树节点中的根节点;
从所述逻辑语法树的根节点开始遍历所述逻辑语法树,识别所述逻辑语法树的所有叶子节点;
输出所述所述逻辑语法树的根节点和所有叶子节点。
8.一种数据血缘关系的抽取装置,其特征在于,包括:
语法树嵌入模块,用于从通用工具类库中获取预设的逻辑语法树模块,并将所述逻辑语法树模块嵌入到开发项目中;
代码读取模块,用于读取所述开发项目的代码,并从所述开发项目的代码中获取数据执行计划;
计划执行模块,用于通过所述逻辑语法树模块解析所述数据执行计划,生成所述开发项目的逻辑语法树;
语法树遍历模块,用于遍历所述开发项目的逻辑语法树,识别所述逻辑语法树的根节点和叶子节点;
信息查找模块,用于分别获取所述根节点的字段信息和所述叶子节点的字段信息,查找所述叶子节点的上下游关联关系;
血缘构建模块,用于基于所述根节点的字段信息、所述叶子节点的字段信息以及所述上下游关联关系构建数据血缘字典,并存储所述数据血缘字典。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至7中任一项所述的数据血缘关系的抽取方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至7中任一项所述的数据血缘关系的抽取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310742251.6A CN116775037A (zh) | 2023-06-20 | 2023-06-20 | 一种数据血缘关系的抽取方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310742251.6A CN116775037A (zh) | 2023-06-20 | 2023-06-20 | 一种数据血缘关系的抽取方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116775037A true CN116775037A (zh) | 2023-09-19 |
Family
ID=88005982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310742251.6A Pending CN116775037A (zh) | 2023-06-20 | 2023-06-20 | 一种数据血缘关系的抽取方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775037A (zh) |
-
2023
- 2023-06-20 CN CN202310742251.6A patent/CN116775037A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112015430A (zh) | JavaScript代码翻译方法、装置、计算机设备及存储介质 | |
US20120143893A1 (en) | Pattern Matching Framework for Log Analysis | |
CN109299074B (zh) | 一种基于模板化数据库视图的数据校验方法及*** | |
CN112948486A (zh) | 批量数据同步方法、***及电子设备 | |
CN107391528B (zh) | 前端组件依赖信息搜索方法及设备 | |
CN116644213A (zh) | Xml文件读取方法、装置、设备及存储介质 | |
CN116860856A (zh) | 一种财务数据处理方法、装置、计算机设备及存储介质 | |
CN113010542B (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN113962597A (zh) | 一种数据分析方法、装置、电子设备及存储介质 | |
CN117033249A (zh) | 一种测试用例生成方法、装置、计算机设备及存储介质 | |
KR100762712B1 (ko) | 규칙기반의 전자문서 변환방법 및 그 시스템 | |
CN113836235B (zh) | 基于数据中台的数据处理方法及其相关设备 | |
CN116450723A (zh) | 数据提取方法、装置、计算机设备及存储介质 | |
CN114968725A (zh) | 任务依赖关系校正方法、装置、计算机设备及存储介质 | |
CN103809915A (zh) | 一种磁盘文件的读写方法和装置 | |
CN115757174A (zh) | 一种数据库的差异检测方法及装置 | |
CN115238009A (zh) | 基于血缘分析的元数据管理方法、装置、设备及存储介质 | |
CN116775037A (zh) | 一种数据血缘关系的抽取方法、装置、设备及存储介质 | |
CN113687827A (zh) | 基于微件的数据列表生成方法、装置、设备及存储介质 | |
US9471569B1 (en) | Integrating information sources to create context-specific documents | |
CN114328214B (zh) | 报表软件的接口测试用例的提效方法、装置、计算机设备 | |
CN112527880B (zh) | 大数据集群元数据信息的采集方法、装置、设备及介质 | |
CN116028108B (zh) | 一种依赖包安装用时分析方法、装置、设备及存储介质 | |
US11947540B1 (en) | Query language for metric data | |
CN112434018B (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 |