CN115904672A - 一种用于检测大数据etl任务调度循环依赖的方法 - Google Patents
一种用于检测大数据etl任务调度循环依赖的方法 Download PDFInfo
- Publication number
- CN115904672A CN115904672A CN202310154222.8A CN202310154222A CN115904672A CN 115904672 A CN115904672 A CN 115904672A CN 202310154222 A CN202310154222 A CN 202310154222A CN 115904672 A CN115904672 A CN 115904672A
- Authority
- CN
- China
- Prior art keywords
- vertex
- task
- etl
- degree
- tasks
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于检测大数据ETL任务调度循环依赖的方法,包括从MySQL数据库读取ETL任务及配置数据;基于哈希映射结构,构造有向无环图实例;采用Json解析,对所述ETL任务进行解析并写入有向无环图实例中;采用循环检测算法,检测有向无环图实例中的ETL任务是否存在循环依赖;输出存在循环依赖的ETL任务。本发明通过读取数据库内所需ETL任务、解析并写入有向无环图中,采用循环检测算法快速分析出有向无环图中具有循环依赖的ETL任务,操作简单迅速,大大降低由于循环依赖任务的存在而导致数据不能及时产生的风险。
Description
技术领域
本发明属于大数据技术领域,具体涉及一种用于检测大数据ETL任务调度循环依赖的方法。
背景技术
在大数据领域的数据仓库建设过程中需要大量的ETL任务,数据仓库的ODS、DWD、DWS、ADS等数据层的任务,其依赖关系层层递进。企业的实际实施中,存在不同的业务部门,不同的业务部门的数据集市也按照数据分层进行建设,也存在跨部门的数据依赖。往往存在A部门依赖B部门的数据,B部门也依赖A部门的数据,如此在ETL过程中,随着任务越来越多,数据清洗任务之间的关系更加错综复杂。在大数据开源系统中,例如开源的调度系统DolphinScheduler,就存在因为任务之间循环依赖导致整个数据仓库数据不能及时产生,进而对业务产生巨大损失,成为所属技术领域技术人员亟待解决的技术问题。
因此,本发明提供了一种用于检测大数据ETL任务调度循环依赖的方法,以至少解决上述部分技术问题。
发明内容
本发明要解决的技术问题是:提供一种用于检测大数据ETL任务调度循环依赖的方法,以至少解决上述部分技术问题。
为实现上述目的,本发明采用的技术方案如下:
一种用于检测大数据ETL任务调度循环依赖的方法,包括以下步骤:
步骤1、从MySQL数据库读取ETL任务及配置数据;
步骤2、基于哈希映射结构,构造有向无环图实例;
步骤3、采用Json解析,对所述ETL任务进行解析并写入有向无环图实例中;
步骤4、采用循环检测算法,检测有向无环图实例中的ETL任务是否存在循环依赖;
步骤5、输出存在循环依赖的ETL任务。
进一步地,所述ETL任务包括依赖任务和任务执行任务。
进一步地,在所述步骤3中,对所述ETL任务进行解析包括:步骤31、判断所述ETL任务是否为依赖任务;步骤32、所述ETL任务是依赖任务,判断其是否与包含所述ETL任务的工作流内的其他任务为全部依赖;所述ETL任务不是依赖任务,获取所述ETL任务的前置任务及属性;步骤33、所述依赖任务是全部依赖,根据过程定义ID获取工作流内的其他任务;所述依赖任务不是全部依赖,获取与所述ETL任务依赖的依赖性任务;步骤34、创建前置任务列表,将所述前置任务及属性、依赖性任务、以及为全部依赖的其他任务添加到前置任务列表中。
进一步地,在所述步骤3中,解析的ETL任务写入有向无环图实例中包括:调用有向无环图实例的添加边方法,将所述ETL任务及其前置任务、以及所述ETL任务与前置任务的关系写入有向无环图实例中。
进一步地,所述有向无环图实例的哈希映射结构包括:数据结构一、存储有向无环图的所有顶点,其中哈希映射的键为顶点的名字、值为顶点的其他附加信息;数据结构二、存储有向无环图中与每个顶点具有正向指向关系的其他顶点,其中哈希映射的键为指向的顶点、值为被指向的其他顶点;数据结构三、存储有向无环图中与每个顶点具有反向指向关系的其他顶点,其中哈希映射的键为被指向的顶点、值为指向的其他顶点。
进一步地,所述步骤4包括:步骤41、遍历有向无环图实例中的数据结构一,获取每个顶点的入度,将入度读为0的顶点放入零度顶点队列中、将入度不为0的顶点放入非零度顶点队列中;步骤42、判断零度顶点队列的容量是否为0,容量为0则跳转至步骤44,容量不为0则进入步骤43;步骤43、依次获取零度顶点队列的各顶点,从有向无环图实例的数据结构二和数据结构三中获取各顶点正向和反向指向的邻居顶点,集合每个顶点的所有邻居顶点并储存于一个后续顶点集合中;循环遍历后续顶点集合的各顶点并记为子顶点,从非零度顶点队列获取所述子顶点的入度,将子顶点的入度减1得到新入度,然后判断新入度是否为0:若子顶点的新入度为0,将子顶点加入到零度顶点队列中,并且将子顶点从非零度顶点队列中移除;若子顶点的新入度不为0,将子顶点及其新入度重新加入到非零度顶点队列中,然后循环步骤43,直至零度顶点队列的容量为0;步骤44、判断非零度顶点队列的容量是否为0,若为0,表示调度系统的任务依赖没有循环依赖,若不为0,表示非零度顶点队列中的顶点为形成循环依赖的任务顶点,即各顶点对应的ETL任务存在循环依赖。
进一步地,所述零度顶点队列、非零度顶点队列的键为顶点的名称、值为顶点的入度。
与现有技术相比,本发明具有以下有益效果:
本发明通过读取数据库内所需ETL任务、解析并写入有向无环图(DAG)中,采用循环检测算法快速分析出有向无环图(DAG)中具有循环依赖的ETL任务,操作简单迅速,大大降低由于循环依赖任务的存在而导致数据不能及时产生的风险。
附图说明
图1为本发明的方法流程图。
实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进一步详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明提供的一种用于检测大数据ETL任务调度循环依赖的方法,包括以下步骤:
步骤1、从MySQL数据库读取ETL任务及配置数据;
步骤2、基于哈希映射结构,构造有向无环图实例;
步骤3、采用Json解析,对所述ETL任务进行解析并写入有向无环图实例中;
步骤4、采用循环检测算法,检测有向无环图实例中的ETL任务是否存在循环依赖;
步骤5、输出存在循环依赖的ETL任务。
本发明通过读取数据库内所需ETL任务、解析并写入有向无环图(DAG)中,采用循环检测算法快速分析出有向无环图(DAG)中具有循环依赖的ETL任务,操作简单迅速,大大降低由于循环依赖任务的存在而导致数据不能及时产生的风险。
所述步骤1中,任务的配置是按照项目、工作流来区分的,一个项目中包含多个工作流,一个工作流中包含多个任务,在调度系统中,任务可以分为两大类:第一类是依赖任务(Dependency Task),第二类任务执行任务(Execute Task)。
所述步骤3中,对所述ETL任务进行解析包括:步骤31、判断所述ETL任务是否为依赖任务;步骤32、所述ETL任务是依赖任务,判断其是否与包含所述ETL任务的工作流内的其他任务为全部依赖;所述ETL任务不是依赖任务,获取所述ETL任务的前置任务( preTasks)及属性;步骤33、所述依赖任务是全部依赖,根据过程定义ID获取工作流内的其他任务;所述依赖任务不是全部依赖,获取与所述ETL任务依赖的依赖性任务;步骤34、创建前置任务列表,将所述前置任务及属性、依赖性任务、以及为全部依赖的其他任务添加到前置任务列表中。
有向无环图(DAG)的全称为“Directed Acyclic Graph”,图上有很多节点,也叫做Vertices 顶点或节点,连接两个顶点线的叫做 edges 边,顶点出度就是从该顶点指向其他顶点的边数,顶点入度就是从其他顶点指向该顶点的边数。调用有向无环图实例的添加边方法,将所述ETL任务及其前置任务、以及所述ETL任务与前置任务的关系写入有向无环图实例中。本发明仅需获取所述ETL任务的名称(Name)、前置任务(preTasks)和(dependencysTask)三种属性来构造所述有向无环图实例。所述有向无环图实例的哈希映射结构包括:数据结构一、存储有向无环图的所有顶点,其中哈希映射的键为顶点的名字、值为顶点的其他附加信息;数据结构二、存储有向无环图中与每个顶点具有正向指向关系的其他顶点,其中哈希映射的键为指向的顶点、值为被指向的其他顶点;数据结构三、存储有向无环图中与每个顶点具有反向指向关系的其他顶点,其中哈希映射的键为被指向的顶点、值为指向的其他顶点。
将所述ETL任务及其前置任务的关系写入有向无环图实例中,然后采用循环检测算法,检测有向无环图实例中的ETL任务是否存在循环依赖。所述检测过程包括:步骤41、遍历有向无环图实例中的数据结构一,获取每个顶点的入度,将入度读为0的顶点放入零度顶点队列(zeroInDegreeNodeQueue)中、将入度不为0的顶点放入非零度顶点队列(notZeroDegreeNodeQueue)中,所述零度顶点队列(zeroInDegreeNodeQueue)、非零度顶点队列(notZeroDegreeNodeQueue)的键(key)为顶点的名称、值(value)为顶点的入度;步骤42、判断零度顶点队列(zeroInDegreeNodeQueue)的容量(size)是否为0,容量(size)为0,表示当前有向无环图(DAG)是一个大的环状结构,则跳转至步骤44,容量(size)不为0则进入步骤43;步骤43、依次获取零度顶点队列(zeroInDegreeNodeQueue)的各顶点,从有向无环图实例的数据结构二和数据结构三中获取各顶点正向和反向指向的邻居顶点,集合每个顶点的所有邻居顶点并储存于一个后续顶点集合(subsequentNodes)中;循环遍历后续顶点集合(subsequentNodes)的各顶点并记为子顶点,从非零度顶点队列(notZeroDegreeNodeQueue)获取所述子顶点的入度,将子顶点的入度减1得到新入度,然后判断新入度是否为0:若子顶点的新入度为0,将子顶点加入到零度顶点队列(ZeroDegreeNodeQueue)中,并且将子顶点从非零度顶点队列(notZeroDegreeNodeQueue)中移除;若子顶点的新入度不为0,将子顶点及其新入度重新加入到非零度顶点队列(notZeroDegreeNodeQueue)中,然后循环步骤43,直至零度顶点队列(ZeroDegreeNodeQueue)的容量(size)为0;步骤44、判断非零度顶点队列(notZeroDegreeNodeQueue)的容量(size)是否为0,若为0,表示调度系统的任务依赖没有循环依赖,若不为0,表示非零度顶点队列(notZeroDegreeNodeQueue)中的顶点为形成循环依赖的任务顶点,即各顶点对应的ETL任务存在循环依赖。
基于所述技术方案,本发明采用有向无环图(DAG)技术并通过DAG循环检测算法,快速判断调度系统中具有循环依赖的ETL任务,为数据仓库数据的及时产生提供了一种简单且利于操作的处理方法。
最后应说明的是:以上各实施例仅仅为本发明的较优实施例用以说明本发明的技术方案,而非对其限制,当然更不是限制本发明的专利范围;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围;也就是说,但凡在本发明的主体设计思想和精神上作出的毫无实质意义的改动或润色,其所解决的技术问题仍然与本发明一致的,均应当包含在本发明的保护范围之内;另外,将本发明的技术方案直接或间接的运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种用于检测大数据ETL任务调度循环依赖的方法,其特征在于,包括以下步骤:
步骤1、从MySQL数据库读取ETL任务及配置数据;
步骤2、基于哈希映射结构,构造有向无环图实例;
步骤3、采用Json解析,对所述ETL任务进行解析并写入有向无环图实例中;
步骤4、采用循环检测算法,检测有向无环图实例中的ETL任务是否存在循环依赖;
步骤5、输出存在循环依赖的ETL任务。
2.根据权利要求1所述的一种用于检测大数据ETL任务调度循环依赖的方法,其特征在于,所述ETL任务包括依赖任务和任务执行任务。
3.根据权利要求2所述的一种用于检测大数据ETL任务调度循环依赖的方法,其特征在于,在所述步骤3中,对所述ETL任务进行解析包括:步骤31、判断所述ETL任务是否为依赖任务;步骤32、所述ETL任务是依赖任务,判断其是否与包含所述ETL任务的工作流内的其他任务为全部依赖;所述ETL任务不是依赖任务,获取所述ETL任务的前置任务及属性;步骤33、所述依赖任务是全部依赖,根据过程定义ID获取工作流内的其他任务;所述依赖任务不是全部依赖,获取与所述ETL任务依赖的依赖性任务;步骤34、创建前置任务列表,将所述前置任务及属性、依赖性任务、以及为全部依赖的其他任务添加到前置任务列表中。
4.根据权利要求3所述的一种用于检测大数据ETL任务调度循环依赖的方法,其特征在于,在所述步骤3中,解析的ETL任务写入有向无环图实例中包括:调用有向无环图实例的添加边方法,将所述ETL任务及其前置任务、以及所述ETL任务与前置任务的关系写入有向无环图实例中。
5.根据权利要求1所述的一种用于检测大数据ETL任务调度循环依赖的方法,其特征在于,所述有向无环图实例的哈希映射结构包括:数据结构一、存储有向无环图的所有顶点,其中哈希映射的键为顶点的名字、值为顶点的其他附加信息;数据结构二、存储有向无环图中与每个顶点具有正向指向关系的其他顶点,其中哈希映射的键为指向的顶点、值为被指向的其他顶点;数据结构三、存储有向无环图中与每个顶点具有反向指向关系的其他顶点,其中哈希映射的键为被指向的顶点、值为指向的其他顶点。
6.根据权利要求5所述的一种用于检测大数据ETL任务调度循环依赖的方法,其特征在于,所述步骤4包括:步骤41、遍历有向无环图实例中的数据结构一,获取每个顶点的入度,将入度读为0的顶点放入零度顶点队列中、将入度不为0的顶点放入非零度顶点队列中;步骤42、判断零度顶点队列的容量是否为0,容量为0则跳转至步骤44,容量不为0则进入步骤43;步骤43、依次获取零度顶点队列的各顶点,从有向无环图实例的数据结构二和数据结构三中获取各顶点正向和反向指向的邻居顶点,集合每个顶点的所有邻居顶点并储存于一个后续顶点集合中;循环遍历后续顶点集合的各顶点并记为子顶点,从非零度顶点队列获取所述子顶点的入度,将子顶点的入度减1得到新入度,然后判断新入度是否为0:若子顶点的新入度为0,将子顶点加入到零度顶点队列中,并且将子顶点从非零度顶点队列中移除;若子顶点的新入度不为0,将子顶点及其新入度重新加入到非零度顶点队列中,然后循环步骤43,直至零度顶点队列的容量为0;步骤44、判断非零度顶点队列的容量是否为0,若为0,表示调度系统的任务依赖没有循环依赖,若不为0,表示非零度顶点队列中的顶点为形成循环依赖的任务顶点,即各顶点对应的ETL任务存在循环依赖。
7.根据权利要求6所述的一种用于检测大数据ETL任务调度循环依赖的方法,其特征在于,所述零度顶点队列、非零度顶点队列的键为顶点的名称、值为顶点的入度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310154222.8A CN115904672B (zh) | 2023-02-23 | 2023-02-23 | 一种用于检测大数据etl任务调度循环依赖的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310154222.8A CN115904672B (zh) | 2023-02-23 | 2023-02-23 | 一种用于检测大数据etl任务调度循环依赖的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115904672A true CN115904672A (zh) | 2023-04-04 |
CN115904672B CN115904672B (zh) | 2023-06-23 |
Family
ID=86481131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310154222.8A Active CN115904672B (zh) | 2023-02-23 | 2023-02-23 | 一种用于检测大数据etl任务调度循环依赖的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115904672B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108037991A (zh) * | 2017-12-26 | 2018-05-15 | 中山大学 | 一种支持作业依赖关系的定时作业调度方法及系统 |
US20200097333A1 (en) * | 2018-09-26 | 2020-03-26 | Ciena Corporation | Scalable task scheduling systems and methods for cyclic interdependent tasks using semantic analysis |
CN111736969A (zh) * | 2020-06-16 | 2020-10-02 | 中国银行股份有限公司 | 分布式作业调度方法及装置 |
CN111984390A (zh) * | 2020-08-31 | 2020-11-24 | 平安医疗健康管理股份有限公司 | 任务调度方法、装置、设备及存储介质 |
CN114139923A (zh) * | 2021-11-26 | 2022-03-04 | 中国银联股份有限公司 | 任务关联性分析方法、装置及计算机可读存储介质 |
CN115061788A (zh) * | 2022-05-31 | 2022-09-16 | 网易(杭州)网络有限公司 | 任务依赖关系的检测方法、装置、服务器及存储介质 |
-
2023
- 2023-02-23 CN CN202310154222.8A patent/CN115904672B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108037991A (zh) * | 2017-12-26 | 2018-05-15 | 中山大学 | 一种支持作业依赖关系的定时作业调度方法及系统 |
US20200097333A1 (en) * | 2018-09-26 | 2020-03-26 | Ciena Corporation | Scalable task scheduling systems and methods for cyclic interdependent tasks using semantic analysis |
CN111736969A (zh) * | 2020-06-16 | 2020-10-02 | 中国银行股份有限公司 | 分布式作业调度方法及装置 |
CN111984390A (zh) * | 2020-08-31 | 2020-11-24 | 平安医疗健康管理股份有限公司 | 任务调度方法、装置、设备及存储介质 |
CN114139923A (zh) * | 2021-11-26 | 2022-03-04 | 中国银联股份有限公司 | 任务关联性分析方法、装置及计算机可读存储介质 |
CN115061788A (zh) * | 2022-05-31 | 2022-09-16 | 网易(杭州)网络有限公司 | 任务依赖关系的检测方法、装置、服务器及存储介质 |
Non-Patent Citations (2)
Title |
---|
NADATHUR R. SATISH 等: "Scheduling task dependence graphs with variable task execution times onto heterogeneous multiprocessors", 《PROCEEDINGS OF THE 8TH ACM INTERNATIONAL CONFERENCE ON EMBEDDED SOFTWARE》 * |
刘涛 等: "用于多个MapReduce作业的任务调度算法", 《微电子学与计算机》 * |
Also Published As
Publication number | Publication date |
---|---|
CN115904672B (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628409B2 (en) | Distributed data transformation system | |
US8676818B2 (en) | Dynamic storage and retrieval of process graphs representative of business processes and extraction of formal process models therefrom | |
US8619084B2 (en) | Dynamic adaptive process discovery and compliance | |
US9053437B2 (en) | Extracting enterprise information through analysis of provenance data | |
Esmaeili et al. | Probabilistic fair clustering | |
US20130013549A1 (en) | Hardware-assisted approach for local triangle counting in graphs | |
US20070106599A1 (en) | Method and apparatus for dynamic risk assessment | |
US20100121668A1 (en) | Automated compliance checking for process instance migration | |
CN113326247B (zh) | 云端数据的迁移方法、装置及电子设备 | |
CN116757915B (zh) | 一种集群gpu资源调度方法 | |
US20100281359A1 (en) | Method, apparatus and system for processing graphic objects | |
CN112801546A (zh) | 一种任务调度方法、装置及存储介质 | |
CN110297820A (zh) | 一种数据处理方法、装置、设备和存储介质 | |
US20220051126A1 (en) | Classification of erroneous cell data | |
CN115904672A (zh) | 一种用于检测大数据etl任务调度循环依赖的方法 | |
CN117312167A (zh) | 一种面向低代码平台的自动化测试方法及系统 | |
US9251491B2 (en) | Performance-aware enterprise components | |
CN113419964B (zh) | 一种测试案例生成方法、装置、计算机设备及存储介质 | |
US20140372386A1 (en) | Detecting wasteful data collection | |
CN116010380A (zh) | 一种基于可视化建模的数据仓库自动化管理方法 | |
US9607287B2 (en) | Integrated view of multi-sourced information objects | |
US20110296442A1 (en) | Generating a web service | |
Wang et al. | A knowledge discovery case study of software quality prediction: Isbsg database | |
KR20220115859A (ko) | 프로세스의 에지 테이블 표현 | |
CN112395478A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |