CN108268494B - 一种数据处理与控制逻辑分离的etl调度方法和装置 - Google Patents
一种数据处理与控制逻辑分离的etl调度方法和装置 Download PDFInfo
- Publication number
- CN108268494B CN108268494B CN201611260460.3A CN201611260460A CN108268494B CN 108268494 B CN108268494 B CN 108268494B CN 201611260460 A CN201611260460 A CN 201611260460A CN 108268494 B CN108268494 B CN 108268494B
- Authority
- CN
- China
- Prior art keywords
- current
- control flow
- etl
- data
- component
- 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.)
- Active
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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据处理与控制逻辑分离的ETL调度方法和装置,所述方法包括:在全部已发布的抽取转换装载ETL任务中查找当前ETL任务;当在全部已发布的ETL任务中没有查找到所述当前ETL任务时,获取所述当前ETL任务对应的当前控制流;其中,所述当前控制流中至少包括:所述当前ETL任务对应的当前数据流;根据所述当前控制流对所述当前ETL任务进行调度。不仅能够简化ETL任务的调度流程,而且还可以提高ETL任务的调度效率。
Description
技术领域
本发明涉及数据处理技术,尤其涉及一种数据处理与控制逻辑分离的ETL调度方法和装置。
背景技术
随着大数据技术发展,分布式的数据存储系统越来越多,大数据应用一般需要集成多个不同的数据存储系统来构建不同应用的数据仓库。传统的数据抽取转换装载ETL是指在构建数据仓库的过程中对数据源中的数据经过抽取(Extract)、转换(Transform)、装载(Load)到数据仓库的过程。
图1为现有技术中ETL任务的组成结构示意图。如图1所示,ETL任务的数据处理过程为:先读取配置数据库中的基本对象配置,按照各模板的配置依次从源数据库中抽取数据,将其存储到临时数据库中;然后将抽取数据存储到临时数据库后,再根据一定的转换规则,对抽取的数据进行转换;数据转换完成后再对其进行一些必要的处理,清除那些不正确的,不完整的数据,再对数据的格式等进行加工,最后装载到目标数据库中。也就是说,在ETL的调度过程中,主要包括数据处理和逻辑控制两个方面。其中,数据处理包括:抽取、转换和装载;逻辑控制包括:依赖、等待、定时和调度。
在现有ETL任务的调度方法中,通常将当前ETL任务的数据处理和控制逻辑作为一个整体的调度单元进行调度。例如,假设当前ETL任务中包括三个子任务,分别为:任务A、任务B和任务C;任务C依赖于任务A和任务B。采用现有ETL任务的调度方法,先在预先保存的全部ETL任务中查找当前ETL任务;当在预先保存的全部ETL中没有查找到当前ETL时,需要先创建当前ETL任务的各个子任务,然后再根据各个子任务创建当前ETL任务。即:先创建任务A、任务B和任务C;然后根据任务A、任务B和任务C创建当前ETL任务。这样就会大大增加调度ETL的复杂度,降低ETL的调度效率。
发明内容
为解决上述技术问题,本发明实施例期望提供一种数据处理与控制逻辑分离的ETL调度方法和装置,不仅能够简化ETL任务的调度流程,而且还可以提高ETL任务的调度效率。
本发明的技术方案是这样实现的:
本发明实施例提供了一种数据处理与控制逻辑分离的ETL调度方法,所述方法包括:
在全部已发布的ETL任务中查找当前ETL任务;
当在全部已发布的ETL任务中没有查找到所述当前ETL任务时,获取所述当前ETL任务对应的当前控制流;其中,所述当前控制流中至少包括:所述当前ETL任务对应的当前数据流;
根据所述当前控制流对所述当前ETL任务进行调度。
在上述实施例中,所述获取所述当前ETL任务对应的当前控制流,包括:
通过预先设置的控制流组件在全部已发布的控制流中查找所述当前控制流;
当在全部已发布的控制流中查找到所述当前控制流时,在全部已发布的控制流中获取所述当前控制流。
在上述实施例中,所述方法还包括:
当在全部已发布的控制流中没有查找到所述当前控制流时,通过所述控制流组件中的调用数据流组件在全部已发布的数据流中查找所述当前ETL任务对应的当前数据流;
当在全部已发布的数据流中查找到所述当前数据流时,在全部已发布的数据流中获取所述当前数据流;
根据所述当前数据流创建所述当前控制流。
在上述实施例中,所述控制流组件至少包括以下其中之一:调用数据流组件、声明依赖组件、引用依赖组件、数据等待组件以及定时器组件。
在上述实施例中,所述方法还包括:
监控所述当前ETL任务是否调度成功;
当所述当前ETL任务调度失败时,对所述当前控制流对应的各个控制流组件进行检测;
当所述当前控制流对应的全部控制流组件调度成功时,对所述当前控制流对应的配置参数进行检测。
本发明实施例还提供了一种数据处理与控制逻辑分离的ETL调度装置,所述装置包括:查找单元、获取单元和调度单元;其中,
所述查找单元,用于在全部已发布的ETL任务中查找当前ETL任务;
所述获取单元,用于当在全部已发布的ETL任务中没有查找到所述当前ETL任务时,获取所述当前ETL任务对应的当前控制流;其中,所述当前控制流至少包括:所述当前ETL任务对应的当前数据流;
所述调度单元,用于根据所述当前控制流对所述当前ETL任务进行调度。
在上述实施例中,所述获取单元包括:查找子单元和获取子单元;其中,
所述查找子单元,用于通过预先设置的控制流组件在全部已发布的控制流中查找所述当前控制流;
所述获取子单元,用于当在全部已发布的控制流中查找到所述当前控制流时,在全部已发布的控制流中获取所述当前控制流。
在上述实施例中,所述查找子单元,还用于当在全部已发布的控制流中没有查找到所述当前控制流时,通过所述控制流组件中的调用数据流组件在全部已发布的数据流中查找所述当前ETL任务对应的当前数据流;
所述获取子单元,还用于当在全部已发布的数据流中查找到所述当前数据流时,在全部已发布的数据流中获取所述当前数据流;根据所述当前数据流创建所述当前控制流。
在上述实施例中,所述控制流组件至少包括以下其中之一:调用数据流组件、声明依赖组件、引用依赖组件、数据等待组件以及定时器组件。
在上述实施例中,所述装置还包括:监控单元和检测单元;其中,
所述监控单元,用于监控所述当前ETL任务是否调度成功;
所述检测单元,用于当所述当前ETL任务调度失败时,对所述当前控制流对应的各个控制流组件进行检测;当所述当前控制流对应的全部控制流组件调度成功时,对所述当前控制流对应的配置参数进行检测。
由此可见,本发明实施例的技术方案中,先在全部已发布的ETL任务中查找当前ETL任务,当在全部已发布的ETL任务中没有查找到当前ETL任务时,获取当前ETL任务对应的当前控制流,其中,当前控制流至少包括:当前ETL任务对应的当前数据流,然后根据当前控制流对当前ETL任务进行调度。也就是说,本发明实施例的技术方案中,当在全部已发布的ETL任务中没有查找到当前ETL任务时,可以通过获取当前ETL任务对应的当前控制流实现对当前ETL任务进行调度。而在现有技术中,先在预先保存的全部ETL任务中查找当前ETL任务;当在预先保存的全部ETL任务中没有查找到当前ETL任务时,需要先创建当前ETL任务的各个子任务,然后再根据各个子任务创建当前ETL任务。因此,和现有技术相比,本发明实施例提供的数据处理与控制逻辑分离的ETL调度方法和装置,不仅能够简化ETL任务的调度流程,而且还可以提高ETL任务的调度效率;并且,本发明实施例的技术方案实现简单方便、便于普及,适用范围更广。
附图说明
图1为现有技术中ETL任务的组成结构示意图;
图2为本发明实施例中数据处理与控制逻辑分离的ETL调度方法的实现流程示意图;
图3为本发明实施例中获取当前控制流的实现方法流程示意图;
图4为本发明实施例中数据流和控制流的组成结构示意图;
图5为本发明实施例中创建当前控制流的组成结构示意图;
图6为本发明实施例中调度当前ETL任务的实现方法示意图;
图7为本发明实施例中数据处理与控制逻辑分离的ETL调度装置的第一组成结构示意图;
图8为本发明实施例数据处理与控制逻辑分离的ETL调度装置的第二组成结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的具体实施例中,图2为本发明实施例中数据处理与控制逻辑分离的ETL调度方法的实现流程示意图。如图2所示,数据处理与控制逻辑分离的ETL调度方法可以包括以下步骤:
步骤201、在全部已发布的ETL任务中查找当前ETL任务。
在本发明的具体实施例中,可以在预先设置的Redis数据库中预先保存全部已发布的ETL任务。具体地,可以将全部已发布的ETL任务采用“任务标识Key+任务内容Value”的方式保存到预先设置的Redis数据库中。当对当前ETL任务进行调度时,可以先在全部已发布的ETL任务中查找当前ETL任务;当在全部已发布的ETL任务中没有查找到当前ETL任务时,可以获取当前ETL任务对应的当前控制流,然后根据当前控制流对当前ETL任务进行调度;当在全部已发布的ETL任务中查找到当前ETL任务,可以按照现有技术中ETL任务的调度方法对当前ETL任务进行调度。
较佳地,在本发明的具体实施例中,还可以部署Tomcat服务器、MySQL服务器和分布式集群等。其中,Tomcat服务器用于部署ETL服务。ETL服务主要包括:设计开发模块、流程引擎模块、监控视图模块、运维告警模块等;MySQL服务器用于存储ETL任务的项目信息、流程信息、调度信息、执行信息、依赖信息等数据;Redis数据库是完全内存运行的数据库,用于保存ETL任务的流程内容;分布式集群采用YARN统一资源管理,集成Pig、Crossdata等组件;其中,Pig提供数据转换服务,Crossdata提供数据抽取和装载服务。
较佳地,在本发明的具体实施例中,当前ETL任务包括多个子任务时,也可以采用本发明实施例提供的数据处理与控制逻辑分离的ETL调度方法对各个子任务进行调度。例如,当前ETL任务可以包括:任务1、任务2、…、任务M;其中,M为大于等于1的自然数。在本发明的具体实施例中,各个子任务均可以采用本发明实施例提供的数据处理与控制逻辑分离的ETL调度方法进行调度。
步骤202、当在全部已发布的ETL任务中没有查找到当前ETL任务时,获取当前ETL任务对应的当前控制流;其中,当前控制流中至少包括:当前ETL任务对应的当前数据流。
在本发明的具体实施例中,当在全部已发布的ETL任务中没有查找到当前ETL任务时,可以获取当前ETL任务对应的当前控制流;其中,当前控制流中至少包括:当前ETL任务对应的当前数据流。
图3为本发明实施例中获取当前控制流的实现方法流程示意图。如图3所示,获取当前ETL任务对应的当前控制流的方法可以包括以下步骤:
步骤202a、通过预先设置的控制流组件在全部已发布的控制流中查找当前控制流;当在全部已发布的控制流中查找到当前控制流时,执行步骤202b;当在全部已发布的控制流中没有查找到当前控制流时,执行步骤202c。
在本发明的具体实施例中,可以将全部已发布的控制流采用“控制流标识Key+控制流内容Value”的方式存储到预先设置的Redis数据库中。其中,控制流标识可以包括:控制流名称和控制流ID。因此,在全部已发布的控制流中查找当前控制流时,可以先确定当前控制流的当前控制流标识,然后可以根据当前控制流标识查找当前控制流。
在本发明的具体实施例中,所述控制流组件至少可以包括以下其中之一:调用数据流组件、声明依赖组件、引用依赖组件、数据等待组件以及定时器组件。举例说明,ETL任务A可以包括:调用数据流组件、数据等待组件和声明依赖组件;其中,该调用数据流组件是ETL任务A执行数据处理操作的入口;数据等待组件负责为符合等待条件的数据流进行数据等待配置;声明依赖组件负责将当前控制流作为某个任务的前置依赖。ETL任务B可以包括:引用依赖组件和调用数据流组件;其中,引用依赖组件负责要依赖的流程,并作为所有后续流程的入口;该调用数据流组件为ETL任务B执行数据处理操作的入口。
具体地,声明依赖组件负责将当前控制流作为某个任务的前置依赖,配置项至少包括:依赖名设置;引用依赖组件负责要依赖的流程,并作为所有后续流程的入口,配置项至少包括:前置依赖的流程路径和引用依赖名称;数据等待组件负责为符合等待条件的数据流进行数据等待配置,配置项至少包括等待条件和超时处理等;定时器组件表示流程执行至此等待若干秒,配置项至少包括:等待时长。
在本发明的具体实施例中,在确定当前控制流标识之后,可以通过预先设置的控制流组件在全部已发布的控制流中查找当前控制流标识对应的当前控制流。其中,控制流组件至少可以包括以下其中之一:调用数据流组件、声明依赖组件、引用依赖组件、数据等待组件以及定时器组件。当在全部已发布的控制流中查找到当前控制流时,执行步骤202b;当在全部已发布的控制流中没有查找到当前控制流时,执行步骤202c。
步骤202b、在全部已发布的控制流中获取当前控制流。
在本发明的具体实施例中,当在全部已发布的控制流中查找到当前控制流时,在全部已发布的控制流中获取当前控制流。例如,假设当前控制流标识为前置依赖A,当在全部已发布的数据流中查找到前置依赖A时,可以在全部已发布的数据流中获取前置依赖A。
步骤202c、通过控制流组件中的调用数据流组件在全部已发布的数据流中查找当前ETL任务对应的当前数据流;当在全部已发布的数据流中查找到当前数据流时,执行步骤202d;当在全部已发布的数据流中没有查找到当前数据流时,执行步骤202f。
在本发明的具体实施例中,当在全部已发布的控制流中没有查找到当前控制流时,可以通过预先设置的控制流组件中的调用数据流组件在全部已发布的数据流中查找当前ETL任务对应的当前数据流。其中,所述控制流组件至少可以包括以下其中之一:调用数据流组件、声明依赖组件、引用依赖组件、数据等待组件以及定时器组件。当在全部已发布的数据流中查找到当前数据流时,执行步骤202d;当在全部已发布的数据流中没有查找到当前数据流时,执行步骤202f。
步骤202d、在全部已发布的数据流中获取当前数据流。
在本发明的具体实施例中,当在全部已发布的数据流中查找到当前数据流时,在全部已发布的数据流中获取当前数据流。例如,假设当前数据流标识为数据流A,当在全部已发布的数据流中查找到数据流A时,可以在全部已发布的数据流中获取数据流A。
步骤202e、根据当前数据流创建当前控制流。
在本发明的具体实施例中,在全部已发布的数据流中查找到当前数据流之后,可以根据当前数据流创建当前控制流。具体地,可以通过控制流组件中的调用数据流组件将当前数据流添加到当前控制流中;然后将该组件作为某个任务的前置依赖;或者选择要依赖的组件,即完成任务依赖选择。较佳地,在创建完成当前控制流之后,可以将当前控制流发布到预先设置的流程视图模块中,即:将该当前控制流设置为已发布状态;然后将该当前控制流添加到全部已发布的控制流中。
步骤202f、在全部已发布的数据流中创建当前数据流,返回执行步骤202e。
在本发明的具体实施例中,当在全部已发布的数据流中没有查找到当前数据流时,可以先通过预先设置的数据流组件创建当前数据流;然后将当前数据流添加到全部已发布的数据流中。具体地,在创建完成当前数据流之后,可以将当前数据流发布到预先设置的流程视图模块中,即:将该当前数据流设置为已发布状态;然后将该当前数据流添加到全部已发布的数据流中。
在本发明的具体实施例中,所述数据流组件可以包括:抽取源数据组件、转换源数据组件和装载源数据组件。图4为本发明实施例中数据流和控制流的组成结构示意图。如图4所示,当前ETL任务可以包括一个子任务,也可以包括多个子任务;其中,一个子任务包括:一个数据流和一个控制流。也就是说,当所述当前ETL任务包括一个子任务时,当前ETL任务包括一个当前数据流和一个当前控制流;当所述当前ETL任务包括多个子任务时,当前ETL任务包括多个当前数据流和多个当前控制流。
具体地,在本发明的具体实施例中,当所述当前ETL任务包括一个子任务时,假设当前ETL任务包括:任务A,当在全部已发布的数据流中没有查找到任务A时,可以通过预先设置的数据流组件创建任务A。具体地,可以先分别拖动任务A对应的抽取源数据组件Component_Extract、转换源数据组件Component_Transform和装载源数据组件Component_Load至画布中,连接抽取源数据组件、转换源数据组件和装载源数据组件;然后设置抽取源数据组件、转换源数据组件和装载源数据组件的配置信息;其中,所述配置信息主要包括:数据源类型(包括:数据库类型、文件系统类型和集群节点类型)、数据源存放目录和抽取字段等。
具体地,在本发明的具体实施例中,当所述当前ETL任务包括多个子任务时,假设当前ETL任务包括:任务A、任务B和任务C。当在全部已发布的数据流中均没有查找到任务A、任务B和任务C时,可以通过预先设置的数据流组件创建任务A、任务B和任务C。
也就是说,在本发明的具体实施例中,当在全部已发布的控制流中没有查找到当前控制流时,在全部已发布的控制流中创建当前控制流。具体地,可以通过预先设置的控制流组件中的调用数据流组件查找当前数据流;当在全部已发布的数据流中查找到当前数据流时,可以根据当前数据流创建当前控制流,然后根据当前控制流对当前ETL任务进行调度;当在全部已发布的数据流中没有查找到当前数据流时;在全部已发布的数据流中创建当前数据流,然后根据当前数据流创建当前控制流,最后根据当前控制流对当前ETL任务进行调度。
步骤203、根据当前控制流对当前ETL任务进行调度。
在本发明的具体实施例中,在获取到当前控制流之后,可以根据当前控制流对当前ETL任务进行调度。例如,假设当前ETL任务包括三个子任务,分别为:任务A、任务B和任务C。通过上述的步骤可以获取各个子任务的当前控制流,然后可以将各个子任务的当前控制流组合为当前ETL任务。
较佳地,在本发明的具体实施例中,在创建完成当前ETL任务之后,可以将当前ETL任务发布到预先设置的流程视图模块中,即:将该当前ETL任务设置为已发布状态。
具体地,在本发明的具体实施例中,流程引擎模块可以根据设计开发模块所提供的流程信息和调度信息,解析、调度、执行流程。其中,流程引擎模块包括:执行引擎和调度引擎。执行引擎包括:Compiler和FlowEngine;Compiler用来解析流程内容、验证流程参数、生成执行计划;FlowEngine依照执行计划并发执行,同时还支持组件的跳过、禁用等操作。调度引擎包括:JobDetail和Trigger;JobDetail负责调度作业的内容;Trigger负责存储调度参数。调度容器可以注册多个JobDetail和Trigger,JobDetail和Trigger组合,即可进行ETL任务调度。调度容器通过线程池并发调度作业,支持动态调度。JobDetail、Trigger都可以在运行时重新设置,并且在下次调用时候起作用。
图5为本发明实施例中创建当前控制流的组成结构示意图。如图5所示,当在全部已发布的控制流中没有查找到当前控制流时,在全部已发布的控制流中创建当前控制流。具体地,可以通过预先设置的控制流组件查找当前数据流;当在全部已发布的数据流中查找到当前数据流时,可以根据当前数据流创建当前控制流,然后根据当前控制流对当前ETL任务进行调度;当在全部已发布的数据流中没有查找到当前数据流时;在全部已发布的数据流中创建当前数据流,然后根据当前数据流创建当前控制流,最后根据当前控制流对当前ETL任务进行调度。
图6为本发明实施例中调度当前ETL任务的实现方法示意图。如图6所示,在本发明的具体实施例中,可以由调度引擎实现对当前ETL任务的调度。具体地,还可以预先设置当前ETL任务的调度参数,然后调度引擎根据该调度参数对当前ETL任务进行调度。
较佳地,在本发明的具体实施例中,还可以对当前ETL调度信息进行数据变更;其中,所述数据变更包括:变更数据处理过程和变更控制逻辑过程。
(1)变更数据处理过程:当需要修改当前数据流时,为了保证执行结果的已发布,若当前控制流正在执行,则需要终止执行;若控制流正在调度,则需要强制下线或等待空闲周期时下线。在取消发布当前控制流时,该当前控制流仅为包含所变更数据流的那个控制流。可以先修改当前数据流,修改完后保存更新配置信息,再次发布即可。原有当前控制流无需变更。
(2)变更控制逻辑过程:由于每个ETL任务都对应一个调用数据流组件,原先建立的数据流任务均可作为数据处理模板留作备用。依赖关系及数据等待等控制逻辑的修改都是基于调用数据流组件而言,调度周期的设置是基于整个控制流而言,对数据处理任务不产生影响。
较佳地,在本发明的具体实施例中,当调度当前ETL任务失败时,可直接进行人工处理,直至执行调度成功。另外,也可以采用自动预警和人工干预相结合的方式进行故障处理。具体地,当所述当前ETL任务调度失败时,对所述当前控制流对应的各个控制流组件进行检测;当所述当前控制流对应的全部控制流组件调度成功时,对所述当前控制流对应的配置参数进行检测。
(1)人工干预:该方法可以借助监控视图模块中的画布流程图实时监控当前ETL任务的调度情况,当对当前ETL任务调度失败时,可以根据人工经验进行故障处理。当调度当前ETL任务失败时,失败状态首先显示在某个控制流组件上,若显示在调用数据流组件上,则需要打开后进一步查看,是哪个数据流组件执行失败,再通过选中失败的数据流组件,查看日志,即可判断错误原因。
(2)自动预警和人工干预相结合:当所述当前ETL任务被周期性调度时,如果在某一次调度中执行失败,若没有及时停止或者修改任务,则该当前ETL任务会继续进行周期性的调度,会产生大量处理失败的数据。选择人工处理或自动处理的依据是根据失败或告警日志判断。
本发明实施例提出的数据处理与控制逻辑分离的ETL调度方法,先在全部已发布的ETL任务中查找当前ETL任务,当在全部已发布的ETL任务中没有查找到当前ETL任务时,获取当前ETL任务对应的当前控制流,其中,当前控制流至少包括:当前ETL任务对应的当前数据流,然后根据当前控制流对当前ETL任务进行调度。也就是说,本发明实施例的技术方案中,当在全部已发布的ETL任务中没有查找到当前ETL任务时,可以通过获取当前ETL任务对应的当前控制流实现对当前ETL任务进行调度。而在现有技术中,先在预先保存的ETL任务中查找当前ETL任务;当在预先保存的全部ETL任务中没有查找到当前ETL任务时,需要先创建当前ETL任务的各个子任务,然后再根据各个子任务创建当前ETL任务。因此,和现有技术相比,本发明实施例提供的数据处理与控制逻辑分离的ETL调度方法,不仅能够简化ETL的调度流程,而且还可以提高ETL的调度效率;并且,本发明实施例的技术方案实现简单方便、便于普及,适用范围更广。
图7为本发明实施例中数据处理与控制逻辑分离的ETL调度装置的第一组成结构示意图。如图7所示,所述装置包括:查找单元701、获取单元702和调度单元703;其中,
所述查找单元701,用于在全部已发布的ETL任务中查找当前ETL任务;
所述获取单元702,用于当在全部已发布的ETL任务中没有查找到所述当前ETL任务时,获取所述当前ETL任务对应的当前控制流;其中,所述当前控制流中至少包括:所述当前ETL任务对应的当前数据流;
所述调度单元703,用于根据所述当前控制流对所述当前ETL任务进行调度。
图8为本发明实施例中数据处理与控制逻辑分离的ETL调度装置的第二组成结构示意图。如图8所示,所述获取单元702包括:查找子单元7021和获取子单元7022;其中,
所述查找子单元7021,用于通过预先设置的控制流组件在全部已发布的控制流中查找所述当前控制流;
所述获取子单元7022,用于当在全部已发布的控制流中查找到所述当前控制流时,在全部已发布的控制流中获取所述当前控制流。
进一步的,所述查找子单元7021,还用于当在全部已发布的控制流中没有查找到所述当前控制流时,通过所述控制流组件中的调用数据流组件在全部已发布的数据流中查找所述当前ETL任务对应的当前数据流;
所述获取子单元7022,还用于当在全部已发布的数据流中查找到所述当前数据流时,在全部已发布的数据流中获取所述当前数据流;根据所述当前数据流创建所述当前控制流。
进一步的,所述控制流组件至少包括以下其中之一:调用数据流组件、声明依赖组件、引用依赖组件、数据等待组件以及定时器组件。
进一步的,所述装置还包括:监控单元704和检测单元705;其中,
所述监控单元704,用于监控所述当前ETL任务是否调度成功;
所述检测单元705,用于当所述当前ETL任务调度失败时,对所述当前控制流对应的各个控制流组件进行检测;当所述当前控制流对应的全部控制流组件调度成功时,对所述当前数据流对应的配置参数进行检测。
在实际应用中,所述查找单元701、获取单元702、调度单元703、监控单元704和检测单元705均可由位于任务调度装置的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA)等实现。
本发明实施例提出的数据处理与控制逻辑分离的ETL调度装置,先在全部已发布的ETL任务中查找当前ETL任务,当在全部已发布的ETL任务中没有查找到当前ETL任务时,获取当前ETL任务对应的当前控制流,其中,当前控制流至少包括:当前ETL任务对应的当前数据流,然后根据当前控制流对当前ETL任务进行调度。也就是说,本发明实施例的技术方案中,当在全部已发布的ETL任务中没有查找到当前ETL任务时,可以通过获取当前ETL任务对应的当前控制流实现对当前ETL任务进行调度。而在现有技术中,先在预先保存的全部ETL任务中查找当前ETL任务;当在预先保存的全部ETL任务中没有查找到当前ETL任务时,需要先创建当前ETL任务的各个子任务,然后再根据各个子任务创建当前ETL任务。因此,和现有技术相比,本发明实施例提供的数据处理与控制逻辑分离的ETL调度装置,不仅能够简化ETL的调度流程,而且还可以提高ETL的调度效率;并且,本发明实施例的技术方案实现简单方便、便于普及,适用范围更广。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (8)
1.一种数据处理与控制逻辑分离的ETL调度方法,其特征在于,所述方法包括:
在全部已发布的ETL任务中查找当前ETL任务;
当在全部已发布的ETL任务中没有查找到所述当前ETL任务时,获取所述当前ETL任务对应的当前控制流;其中,所述当前控制流中至少包括:所述当前ETL任务对应的当前数据流;所述获取所述当前ETL任务对应的当前控制流,包括:通过预先设置的控制流组件在全部已发布的控制流中查找所述当前控制流;当在全部已发布的控制流中没有查找到所述当前控制流时,通过所述控制流组件中的调用数据流组件在全部已发布的数据流中查找所述当前ETL任务对应的当前数据流;当在全部已发布的数据流中查找到所述当前数据流时,在全部已发布的数据流中获取所述当前数据流;根据所述当前数据流创建所述当前控制流;
根据所述当前控制流对所述当前ETL任务进行调度。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当在全部已发布的控制流中查找到所述当前控制流时,在全部已发布的控制流中获取所述当前控制流。
3.根据权利要求1或2所述的方法,其特征在于,所述控制流组件至少包括以下其中之一:所述调用数据流组件、声明依赖组件、引用依赖组件、数据等待组件以及定时器组件。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
监控所述当前ETL任务是否调度成功;
当所述当前ETL任务调度失败时,对所述当前控制流对应的各个控制流组件进行检测;
当所述当前控制流对应的全部控制流组件调度成功时,对所述当前控制流对应的配置参数进行检测。
5.一种数据处理与控制逻辑分离的ETL调度装置,其特征在于,所述装置包括:查找单元、获取单元和调度单元;其中,
所述查找单元,用于在全部已发布的ETL任务中查找当前ETL任务;
所述获取单元,用于当在全部已发布的ETL任务中没有查找到所述当前ETL任务时,获取所述当前ETL任务对应的当前控制流;其中,所述当前控制流中至少包括:所述当前ETL任务对应的当前数据流;
所述获取单元包括:查找子单元和获取子单元;其中,所述查找子单元,用于通过预先设置的控制流组件在全部已发布的控制流中查找所述当前控制流,以及当在全部已发布的控制流中没有查找到所述当前控制流时,通过所述控制流组件中的调用数据流组件在全部已发布的数据流中查找所述当前ETL任务对应的当前数据流;所述获取子单元,用于当在全部已发布的数据流中查找到所述当前数据流时,在全部已发布的数据流中获取所述当前数据流;根据所述当前数据流创建所述当前控制流;
所述调度单元,用于根据所述当前控制流对所述当前ETL任务进行调度。
6.根据权利要求5所述的装置,其特征在于,
所述获取子单元,还用于当在全部已发布的控制流中查找到所述当前控制流时,在全部已发布的控制流中获取所述当前控制流。
7.根据权利要求5或6所述的装置,其特征在于,所述控制流组件至少包括以下其中之一:所述调用数据流组件、声明依赖组件、引用依赖组件、数据等待组件以及定时器组件。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:监控单元和检测单元;其中,
所述监控单元,用于监控所述当前ETL任务是否调度成功;
所述检测单元,用于当所述当前ETL任务调度失败时,对所述当前控制流对应的各个控制流组件进行检测;当所述当前控制流对应的全部控制流组件调度成功时,对所述当前控制流对应的配置参数进行检测。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611260460.3A CN108268494B (zh) | 2016-12-30 | 2016-12-30 | 一种数据处理与控制逻辑分离的etl调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611260460.3A CN108268494B (zh) | 2016-12-30 | 2016-12-30 | 一种数据处理与控制逻辑分离的etl调度方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108268494A CN108268494A (zh) | 2018-07-10 |
CN108268494B true CN108268494B (zh) | 2021-11-02 |
Family
ID=62754987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611260460.3A Active CN108268494B (zh) | 2016-12-30 | 2016-12-30 | 一种数据处理与控制逻辑分离的etl调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108268494B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109933628A (zh) * | 2019-03-18 | 2019-06-25 | 山东浪潮通软信息科技有限公司 | 一种基于mxgraph的ETL设计器及其在线设计方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8688625B1 (en) * | 2010-12-31 | 2014-04-01 | United Services Automobile Association (Usaa) | Extract, transform, and load application complexity management framework |
CN104965754A (zh) * | 2015-03-31 | 2015-10-07 | 腾讯科技(深圳)有限公司 | 任务调度方法及任务调度装置 |
CN105589874A (zh) * | 2014-10-22 | 2016-05-18 | 阿里巴巴集团控股有限公司 | Etl任务依赖关系的检测方法、装置及etl工具 |
CN106250240A (zh) * | 2016-08-02 | 2016-12-21 | 北京科技大学 | 一种任务优化调度方法 |
-
2016
- 2016-12-30 CN CN201611260460.3A patent/CN108268494B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8688625B1 (en) * | 2010-12-31 | 2014-04-01 | United Services Automobile Association (Usaa) | Extract, transform, and load application complexity management framework |
CN105589874A (zh) * | 2014-10-22 | 2016-05-18 | 阿里巴巴集团控股有限公司 | Etl任务依赖关系的检测方法、装置及etl工具 |
CN104965754A (zh) * | 2015-03-31 | 2015-10-07 | 腾讯科技(深圳)有限公司 | 任务调度方法及任务调度装置 |
CN106250240A (zh) * | 2016-08-02 | 2016-12-21 | 北京科技大学 | 一种任务优化调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108268494A (zh) | 2018-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20120324454A1 (en) | Control Flow Graph Driven Operating System | |
CN106708740B (zh) | 脚本测试方法及装置 | |
CN103034554A (zh) | 一种纠错重启以及自动判断启动的etl调度系统及方法 | |
US20160170863A1 (en) | Software test automation | |
CN101916224A (zh) | 测试进程异常检测方法以及自动化测试控制装置 | |
CN108429787B (zh) | 容器部署方法及装置、计算机存储介质、终端 | |
CN111144839B (zh) | 一种项目构建方法、持续集成系统及终端设备 | |
KR20120139403A (ko) | 게임 서버의 작업 파일 실행 장치 및 방법 | |
CN106371927A (zh) | 一种Linux守护进程的实现方法及系统 | |
WO2015032311A1 (zh) | 一种代码生成方法、编译器、调度方法、装置及调度系统 | |
CN106528281A (zh) | 卫星遥测数据离线统一快速处理系统 | |
CN108268494B (zh) | 一种数据处理与控制逻辑分离的etl调度方法和装置 | |
CN109445929A (zh) | 一种调度任务的方法和系统 | |
US20100077382A1 (en) | Computer-readable recording medium string a bug detection support program, similar structure identification information list output program, bug detection support apparatus, and bug detection support method | |
CN115220863A (zh) | 容器应用的运维方法、装置、计算机设备和存储介质 | |
KR101266565B1 (ko) | 요구 인터페이스의 명세 정보를 이용한 소프트웨어 컴포넌트의 테스트 케이스 생성 방법 및 실행 방법 | |
CN113268318A (zh) | 一种任务调度的方法和分布式系统 | |
CN112256580A (zh) | 一种代码扫描方法、装置、设备及存储介质 | |
CN115237728B (zh) | 一种实时操作系统运行状态的可视化监视方法 | |
CN116400950A (zh) | 一种基于版本控制的DevOps元流水线系统 | |
US20120227029A1 (en) | Method for code transformation supporting temporal abstraction of parameters | |
CN101794215B (zh) | 一种汇编执行复杂任务的方法和装置 | |
CN109522048B (zh) | 一种同步多线程中断验证方法及系统 | |
CN101996091A (zh) | 实现支持多种流程运行的图形执行虚拟机系统及其方法 | |
CN110795224A (zh) | 一种基于Ansible的自动化运维系统和方法 |
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 |