CN115061788A - 任务依赖关系的检测方法、装置、服务器及存储介质 - Google Patents
任务依赖关系的检测方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN115061788A CN115061788A CN202210615035.0A CN202210615035A CN115061788A CN 115061788 A CN115061788 A CN 115061788A CN 202210615035 A CN202210615035 A CN 202210615035A CN 115061788 A CN115061788 A CN 115061788A
- Authority
- CN
- China
- Prior art keywords
- task
- scheduling
- data
- target
- dependency
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/2282—Tablespace storage structures; Management thereof
-
- 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
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种任务依赖关系的检测方法、装置、服务器及存储介质,包括:新建包括多个调度任务的调度任务流,其中,每个所述调度任务配置有对应的任务依赖关系;基于所述调度任务流中目标调度任务的任务依赖关系,从预先建立的数据库中查询与所述任务依赖关系对应的前置任务;当所述前置任务不属于所述调度任务流时,创建用于检测所述前置任务的数据就绪状态的数据感知器;当所述数据感知器检测到所述前置任务处于数据就绪状态时,确定满足所述目标调度任务对应的目标任务依赖关系。本发明可以显著改善因上游任务延迟而导致的任务空跑的问题,有效提高了任务依赖关系的可靠性。
Description
技术领域
本发明涉及数据处理技术领域,尤其是涉及一种任务依赖关系的检测方法、装置、服务器及存储介质。
背景技术
Airflow是一款开源的分布式任务调度框架,在Airflow中任务集合可以构成有向无环图,在有向无环图中所有任务之间存在运行次序的任务依赖关系,且有向无环图中所有任务的调度周期相同。然而数据仓库中ETL(Extract-Transform-Load,抽取-转换-加载)任务通常具有不同的调度周期,相关技术提出预估ETL任务的上游任务完成时间,并定时调度ETL任务的方案,以解决无法建立跨调度周期的任务依赖关系的问题,但是该方案在上游任务出现延迟等情况时将导致ETL任务空跑,可见其建立的任务依赖关系的可靠性较差。
发明内容
有鉴于此,本发明的目的在于提供一种任务依赖关系的检测方法、装置、服务器及存储介质,可以显著改善因上游任务延迟而导致的任务空跑的问题,有效提高了任务依赖关系的可靠性。
第一方面,本发明实施例提供了一种任务依赖关系的检测方法,包括:新建包括多个调度任务的调度任务流,其中,每个所述调度任务配置有对应的任务依赖关系;基于所述调度任务流中目标调度任务的任务依赖关系,从预先建立的数据库中查询与所述任务依赖关系对应的前置任务;当所述前置任务不属于所述调度任务流时,创建用于检测所述前置任务的数据就绪状态的数据感知器;当所述数据感知器检测到所述前置任务处于数据就绪状态时,确定满足所述目标调度任务对应的目标任务依赖关系。
在一种实施方式中,在所述新建包括多个调度任务的调度任务流的步骤之前,所述方法还包括:新建包括多个数据集成任务的数据集成任务流;运行所述数据集成任务流中各个所述数据集成任务得到集成数据表,以从指定数据源中获取原始任务数据,并将所述数据集成任务与所述集成数据表之间的第一映射关系存储至预先建立的数据库;获取运行调度任务得到的调度数据表,并将所述调度任务与所述调度数据表之间的第二映射关系存储至所述数据库。
在一种实施方式中,所述基于所述调度任务流中目标调度任务的任务依赖关系,从预先建立的数据库中查询与所述任务依赖关系对应的前置任务的步骤,包括:获取所述目标调度任务的任务依赖关系中的数据依赖列表;其中,所述目标调度任务包括ETL任务;基于所述数据依赖列表对应的数据表信息,确定预先建立的数据库中与所述数据表信息对应的任务为所述目标调度任务对应的前置任务。
在一种实施方式中,在当所述前置任务不属于所述调度任务流时,创建用于检测所述前置任务的数据就绪状态的数据感知器的步骤之前,包括:判断所述前置任务对应的数据表信息,是否为除所述调度任务流之外的其余调度任务流中调度任务对应的数据表信息;如果是,则确定所述前置任务不属于所述调度任务流。
在一种实施方式中,所述创建用于检测所述前置任务的数据就绪状态的数据感知器的步骤,包括:从所述数据库中查找所述数据表信息对应的任务;基于所述数据表信息对应的任务,配置生成用于检测所述前置任务的数据就绪状态的数据感知器。
在一种实施方式中,所述数据感知器检测所述前置任务的数据就绪状态的步骤,包括:获取所述目标调度任务的任务依赖关系中的依赖周期;若所述前置任务在所述依赖周期对应调度周期的运行实例已执行,则判定所述前置任务处于数据就绪状态;若所述前置任务在所述依赖周期对应调度周期的运行实例未执行,则判定所述前置任务处于数据未就绪状态。
在一种实施方式中,所述新建包括多个调度任务的调度任务流的步骤,包括:新建包括多个调度任务的调度任务流,并确定所述调度任务流的调度周期。
在一种实施方式中,在所述当所述数据感知器检测到所述前置任务处于数据就绪状态时,确定满足所述目标调度任务对应的目标任务依赖关系之后的步骤,所述方法还包括:从所述数据库中拉取运行所述调度任务流所需的目标任务数据;基于所述目标任务数据和所述调度任务流的所述调度周期,运行所述调度任务流中各个所述调度任务;在运行所述目标调度任务之前,如果确定满足所述目标调度任务对应的目标任务依赖关系,则基于所述目标任务数据运行所述目标调度任务。
第二方面,本发明实施例还提供一种任务依赖关系的检测装置,包括:任务流新建模块,用于新建包括多个调度任务的调度任务流,其中,每个所述调度任务配置有对应的任务依赖关系;前置任务查询模块,用于基于所述调度任务流中目标调度任务的任务依赖关系,从预先建立的数据库中查询与所述任务依赖关系对应的前置任务;感知器创建模块,用于当所述前置任务不属于所述调度任务流时,创建用于检测所述前置任务的数据就绪状态的数据感知器;依赖关系检测模块,用于当所述数据感知器检测到所述前置任务处于数据就绪状态时,确定满足所述目标调度任务对应的目标任务依赖关系。
第三方面,本发明实施例还提供一种服务器,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现第一方面提供的任一项所述的任务依赖关系的检测方法。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现第一方面提供的任一项所述的任务依赖关系的检测方法。
本发明实施例提供的一种任务依赖关系的检测方法、装置、服务器及存储介质,首先新建包括多个调度任务的调度任务流,且每个调度任务配置有对应的任务依赖关系,再基于调度任务流中目标调度任务的任务依赖关系,从预先建立的数据库中查询与任务依赖关系对应的前置任务,当前置任务不属于调度任务流时,创建用于检测前置任务的数据就绪状态的数据感知器,并当数据感知器检测到前置任务处于数据就绪状态时,确定满足目标调度任务对应的目标任务依赖关系。上述方法在创建调度任务流和其任务依赖信息之后,可以根据任务依赖信息确定目标调度任务对应的前置任务,并在前置任务不属于该调度任务流时创建数据感知器,从而利用数据感知器检测前置任务是否处于数据就绪状态,当处于数据就绪状态时即可确定满足目标调度任务对应的目标任务依赖关系,从而可以显著改善因前置任务延迟而导致的目标调度任务空跑的问题,有效提高了任务依赖关系的可靠性。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种任务依赖关系的检测方法的流程示意图;
图2为本发明实施例提供的一种任务依赖关系的检测方法的框架图;
图3为本发明实施例提供的一种任务依赖关系的检测装置的结构示意图;
图4为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,Airflow能够连接存在上下游依赖的任务从而形成任务流,自动构建相应的有向无环图(DAG,Directed Acyclic Graph),DAG图中个任务之间存在相互的运行次序的任务依赖关系,使得任务流中各任务能够有序运行,且各任务的调度周期相同。在Airflow中,用户可以将任务、任务依赖关系和配置信息集成到Python文件,从而极大的简化工作流的开发和运维管理,因此在大数据的数据仓库ETL处理领域具有广泛的应用。但是在数据仓库ETL开发过程中,上述形式的任务依赖关系和调度周期存在以下问题:1)从数据仓库的角度来看,任务依赖关系是建立在数据之上,因此在多人协作的数据仓库团队中,下游用户将很难知道上游数据产出的任务的具体内容,从而导致配置该任务的任务依赖关系较为困难;2)数据仓库中ETL任务通常具有不同的调度周期,诸如按天调度或按小时调度,然而现有方案无法建立跨调度周期的任务依赖关系。
针对问题1),相关技术提出制定开发规范约束,保证任务命名和数据命名一致,并将关系信息以共享文档的形式以供多人查阅,以此解决依赖配置问题,这将导致任务依赖关系配置较为割裂,需要根据查询相关文档后将数据表转化为任务后才能配置任务依赖关系。针对问题2),相关技术提出通过预估上游任务的完成时间,配置定时调度以解决跨周期的任务依赖关系建立问题,然而当上游任务出现延迟时,该方案容易造成ETL任务空跑。
基于此,本发明实施提供了一种任务依赖关系的检测方法、装置、服务器及存储介质,可以显著改善因上游任务延迟而导致的任务空跑的问题,有效提高了任务依赖关系的可靠性。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种任务依赖关系的检测方法进行详细介绍,参见图1所示的一种任务依赖关系的检测方法的流程示意图,该方法主要包括以下步骤S102至步骤S108:
步骤S102,新建包括多个调度任务的调度任务流,其中,每个调度任务配置有对应的任务依赖关系。其中,任务依赖关系至少包括数据表依赖列表和依赖周期,数据表依赖列表用于表征触发对应的调度任务所需的数据表信息,依赖周期用于表征调度任务对应的前置任务的调度周期,数据表信息为调度任务依赖的前置任务在调度周期对应的运行实例的数据输出。另外,在同一个调度任务流中,各调度任务的调度周期相同,均为第一调度周期,数据表信息可以为Hive数据表,依赖周期为目标任务的前置任务所属调度任务流的第二调度周期,目标任务可以为ETL任务,目标任务的前置任务所属调度任务流可以为上述创建的调度任务流,也可以为除该调度任务流之外的其余调度任务流,第一调度周期和第二调度周期可以相同或不同。
步骤S104,基于调度任务流中目标调度任务的任务依赖关系,从预先建立的数据库中查询与任务依赖关系对应的前置任务。其中,目标调度任务可以为调度任务流中任一调度任务,诸如ETL任务。在一种实施方式中,数据库中存储有任务与数据表信息之间的映射关系,因此可以通过任务依赖关系中数据表依赖列表表征的数据表信息,在数据库中查询与之对应的任务,并将该任务作为前置任务。
步骤S106,当前置任务不属于调度任务流时,创建用于检测前置任务的数据就绪状态的数据感知器。其中,数据感知器用于检测前置任务的数据就绪状态,数据就绪状态也用于表征前置任务的执行成功。在一种实施方式中,可以在数据表依赖列表包含除调度任务流之外的其余调度任务流生成的Hive数据表时,确定目标任务的前置任务不属于该调度任务流,并基于前置任务配置生成用于检测前置任务的数据就绪状态的数据感知器。
步骤S108,当数据感知器检测到前置任务处于数据就绪状态时,确定满足目标调度任务对应的目标任务依赖关系。在一种实施方式中,可以利用数据感知器检测前置任务的数据就绪状态,并当前置任务处于数据就绪状态时,即可确定满足目标调度任务对应的目标任务依赖关系,从而触发ETL任务,也即任务依赖关系为:前置任务运行成功。
本发明实施例提供的任务依赖关系的检测方法,在创建调度任务流和其任务依赖信息之后,可以根据任务依赖信息确定目标调度任务对应的前置任务,并在前置任务不属于该调度任务流时创建数据感知器,从而利用数据感知器检测前置任务是否处于数据就绪状态,当处于数据就绪状态时即可确定满足目标调度任务对应的目标任务依赖关系,从而可以显著改善因前置任务延迟而导致的目标调度任务空跑的问题,有效提高了任务依赖关系的可靠性。
在实际应用中,在新建调度任务流之前,可以预先创建数据库,数据库可以包括第一子数据库和第二子数据库,其中第一子数据库用于存储Hive数据表与任务之间的关联关系。具体的,当运行调度任务时生成该调度任务对应的Hive数据表时,将该调度任务与其输出的Hive数据表关联存储至第一子数据库中,或者,当运行数据集成任务时将生成该数据集成任务对应的Hive数据表,将该数据集成任务与其输出的Hive数据表关联存储至第一子数据库中。本发明实施例通过将Hive数据表与任务之间的关联关系存储至第一子数据库,可以有效改善多人协作的数据仓库ETL开发效率、依赖关系配置割裂的问题。另外,上述第二子数据库用于存储运行调度任务所需的原始任务数据,该原始任务数据时运行数据集成任务得到的。
具体的,在创建调度任务流之前,还可以创建数据集成任务流,以利用数据集成任务流获取运行调度任务流所需的原始任务数据。包括:(1)新建包括多个数据集成任务的数据集成任务流;其中,数据集成任务流包括多个数据集成任务,数据集成任务用于从指定数据源拉取原始任务数据,指定数据源包括kafka和mysql等外部数据源。(2)运行数据集成任务流中各个数据集成任务得到集成数据表,以从指定数据源中获取原始任务数据,并将数据集成任务与集成数据表之间的第一映射关系存储至预先建立的数据库。示例性的,可以利用各个数据集成任务定时从kafka或mysql等指定数据源中拉取原始任务数据并导入至数据仓库(也即,第二子数据库)中,构成一系列Hive数据表,这些数据表是数据仓库中所有数据的源头。在实际应用中,在数据集成任务执行完成后,还可以将数据集成任务流、数据集成任务和Hive数据表信息存入上述第一子数据库中,第一数据库可以采用HDFS(HadoopDistributed File System,Hadoop分布式文件系统)。(3)获取运行调度任务得到的调度数据表,并将调度任务与调度数据表之间的第二映射关系存储至数据库。在一种实施方式中,可以将调度任务流、调度任务和Hive数据表信息存入上述第一子数据库中。进一步的,可以根据当前调度任务对应的前置任务输出的Hive数据表信息,配置当前调度任务的数据表依赖列表,并根据前置任务的调度周期配置当前调度任务的依赖周期。
在前述实施例的基础上,本发明实施例还提供了一种新建包括多个调度任务的调度任务流的实施方式,可以新建包括多个调度任务的调度任务流,并确定调度任务流的调度周期。其中,任务至少包括ETL任务。在实际应用中,调度任务流包括ETL任务和至少一个调度任务,并确定该调度任务流的调度周期。示例性的,新建调度任务流包括ETL任务task_id1、调度任务task_id2、调度任务task_id3、调度任务task_id4等。进一步的,可以配置ETL任务的数据表依赖列表和依赖周期,运行该ETL任务可以产出Hive数据表,可以将调度任务流、ETL任务和产出的Hive数据表存入前述第一子数据库。
另外,本发明实施例还提供了一种前述步骤S104的实施方式,参见如下步骤一至步骤四:
步骤一,判断前置任务对应的数据表信息,是否为除调度任务流之外的其余调度任务流中调度任务对应的数据表信息。在实际应用中,每个任务运行后均可产出相应的Hive数据表,从而可以基于前置任务对应的Hive数据表判断前置任务是否属于调度任务流。假设调度任务流包括ETL任务task_id1、调度任务task_id2、调度任务task_id3、调度任务task_id4,某调度任务流包括调度任务task_id5、调度任务task_id6、调度任务task_id7,第一子数据库中存储有每个任务关联的Hive数据表,因此可以从第一子数据库中查找出其余调度任务流生成的Hive数据表关联的任务。示例性的,若前置任务对应的数据表为调度任务task_id2对应的数据表,则可以确定前置任务属于调度任务流;若前置任务对应的数据表为调度任务task_id5对应的数据表,则可以确定前置任务不属于度任务流。
步骤二,如果是,则确定前置任务不属于调度任务流。
步骤三,获取目标调度任务的任务依赖关系中的数据依赖列表,也即,获取目标调度任务的任务依赖关系中的Hive数据表。其中,目标调度任务包括ETL任务。
步骤四,基于数据依赖列表对应的数据表信息,确定预先建立的数据库中与数据表信息对应的任务为目标调度任务对应的前置任务。在一种实施方式中,当前置任务不属于调度任务流时,可以从第一子数据库中查找目标调度任务的任务依赖关系中Hive数据表关联的任务流信息和任务信息等,从而将关联的任务确定为ETL任务的前置任务。
在具体实现时,如果前置任务属于调度任务流,将不存在跨调度周期的情况,因此可以直接根据ETL任务的任务依赖关系,从调度任务流中确定该ETL任务的前置任务。
进一步的,本发明实施例还提供了一种创建用于检测前置任务的数据就绪状态的数据感知器的实施方式,可以从数据库中查找数据表信息对应的任务,再基于数据表信息对应的任务,配置生成用于检测前置任务的数据就绪状态的数据感知器。示例性的,假设调度任务流包括ETL任务task_id1、调度任务task_id2、调度任务task_id3、调度任务task_id4,某调度任务流包括调度任务task_id5、调度任务task_id6、调度任务task_id7,第一子数据库中存储有每个任务关联的Hive数据表,因此可以从第一子数据库中查找出数据表信息对应的任务,若数据表信息对应的任务为调度任务task_id5,则可以基于调度任务task_id5配置生成数据感知器。
在前述实施例的基础上,本发明实施例还提供了一种数据感知器检测前置任务的数据就绪状态的实施方式,参见如下步骤1至步骤3:
步骤1,获取目标调度任务的任务依赖关系中的依赖周期。
步骤2,若前置任务在依赖周期对应调度周期的运行实例已执行,则判定前置任务处于数据就绪状态。示例性的,调度周期为前置任务所属任务流的执行时间,诸如执行时间为X时,依赖周期为目标调度任务调度的Hive数据表的输出时间,诸如依赖周期需要获取Y时输出的Hive数据表,如果前置任务已经在Y时输出了Hive数据表,则表征运行实例已执行,前置数据处于数据就绪状态。
步骤3,若前置任务在依赖周期对应调度周期的运行实例未执行,则判定前置任务处于数据未就绪状态。示例性的,如果前置任务已经在Y时还未输出Hive数据表,则表征运行实例未执行,前置数据处于数据未就绪状态。
在一种实施方式中,以ETL任务的前置任务不属于调度任务流为例,本发明实施例还提供了一种运行调度任务流的实施方式,参见如下步骤a至步骤d:
步骤a,从数据库中拉取运行调度任务流所需的目标任务数据。在一种实施方式中,可以在监听到调度任务流满足预设运行条件时,从第二子数据库中岔路目标任务数据,其中,预设运行条件,包括:接收到新建调度任务流的运行指令,或者,达到调度任务流的第一调度周期。在实际应用中,当接收到运行指令或达到第一调度周期时,将运行调度任务流,可以根据第一子数据库中存储的任务流信息、任务信息和Hive数据表之间的映射关系,确定所需的Hive数据表,从而基于该Hive数据表从第二子数据库读取对应的目标任务数据。
步骤b,基于所述目标任务数据和所述调度任务流的所述调度周期,运行所述调度任务流中各个所述调度任务。在一种实施方式中,可以按照预先配置的任务依赖关系,依次执行各个任务。
步骤c,在运行所述目标调度任务之前,如果确定满足所述目标调度任务对应的目标任务依赖关系,则基于所述目标任务数据运行所述目标调度任务。在一种实施方式中,当运行至ETL任务,且ETL任务的前置任务不属于调度任务流时,将利用数据感知器检测前置任务数据就绪状态是否处于就绪状态,具体的,(1)可以根据目标调度任务的数据表依赖列表中包含的Hive数据表,从第一子数据库中查找数据表信息对应的任务流信息和任务信息。(2)基于任务流信息、任务信息和目标任务的依赖周期,获取前置任务所属调度任务流的运行实例信息。在一种实施方式中,可以通过访问airflow的元数据库,获取前置任务所属调度任务流的运行实例信息。(3)基于运行实例信息确定前置任务是否处于数据就绪状态。在一种实施方式中,运行实例信息可以体现前置任务是否成功执行,如果前置任务运行成功,则确定处于数据就绪状态,如果前置任务运行未成功,则确定处于数据未就绪状态。(4)如果处于数据就绪状态,则基于目标任务数据运行目标任务。
为便于对前述实施例进行理解,本发明实施例提供了一种任务依赖关系的检测方法的应用示例,以目标调度任务为ETL任务为例,参见图2所示的一种任务依赖关系的检测方法的框架图,参见如下(1)至(9):
(1)响应针对于数据库的创建操作,确定数据库mapping_db1(也即,前述第一子数据库)。其中,数据库mapping_db1用于存储调度任务和Hive数据表之间的关联关系,包括调度任务流信息dag_id、调度任务信息task_id和Hive数据表信息hive_table,还可存储数据集成任务和Hive数据表之间的关联关系。
(2)响应针对于数据集成任务流的创建操作,确定数据集成任务流。其中,数据集成任务流包括至少一个数据集成任务,运行各个数据集成任务,可以定时的从kafka或mysql等指定数据源中获取原始任务数据,并将原始任务数据导入到数据仓库(也即,前述第二子数据库),构成各个数据集成任务产出的Hive数据表,该Hive数据表是数据仓库中所有原始任务数据的源头,后续运行新建调度任务流时,可以从数据仓库中读取所需的目标任务数据。另外,数据集成任务执行完成后将数据集成任务流、数据集成任务和各个数据集成任务产出的Hive数据表存入数据库mapping_db1。
(3)响应针对于调度任务流的创建操作,确定调度任务流dag_id1和调度任务流dag_id1的第一调度周期。
(4)在调度任务流dag_id1中,响应针对于ETL任务的创建操作,确定ETL任务task_id1,以及相应针对于ETL任务的配置操作,确定ETL任务task_id1的数据表依赖列表table_list1、依赖周期schedule_interval_list1、ETL任务task_id1产出的Hive数据表table1,将调度任务流dag_id1、ETL任务task_id1和Hive数据表table1存入数据库mapping_db1。
(5)如果监听到针对于调度任务流dag_id1的发布操作,判断数据表依赖列表table_list1中是否存在除调度任务流dag_id1之外的其余调度任务流产出的Hive数据表。如果是,执行(6);如果否,执行(7)。
(6)响应针对于数据感知器的创建操作,确定数据感知器sensor1。在一种实施方式中,可以将ETL任务task_id1的前置任务配置为数据感知器sensor1。其中数据感知器sensor1的实现为:根据ETL任务task_id1从数据库mapping_db1中获取调度任务流信息dag_list1、调度任务信息task_list1,并结合依赖周期schedule_interval_list1,通过访问Airflow的元数据库获取前置任务的周期运行实例信息,从而基于周期运行实例判断前置任务是否执行成功,当前置任务执行成功时即可否触发ETL任务task_id1。另外,图2中数据感知器sensor2可以为另一ETL任务的的前置任务,数据感知器sensor2的实现与上述数据感知器sensor1相同,本发明实施例对此不再进行赘述。
(7)将ETL任务task_id1的上游任务配置为数据表依赖列表table_list1。
(8)重复(4)至(7)可以在调度任务流dag_id1下重复创建相同调度周期的调度任务。
(9)重复(3)至(8)可以重复创建不同调度周期的调度任务流。
综上,本发明实施例提供的任务依赖关系的检测方法,可以通过建立数据和任务关系映射,以及使用数据感知器检测数据就绪状态,可以改善airflow中的数据依赖无法建立和跨调度周期的问题,还可以改善多人协作的数据仓库ETL开发效率、依赖关系配置割裂的问题。
对于前述实施例提供的任务依赖关系的检测方法,本发明实施例还提供了一种任务依赖关系的检测装置,参见图3所示的一种任务依赖关系的检测装置的结构示意图,该装置主要包括以下部分:
任务流新建模块302,用于新建包括多个调度任务的调度任务流,其中,每个调度任务配置有对应的任务依赖关系;
前置任务查询模块304,用于基于调度任务流中目标调度任务的任务依赖关系,从预先建立的数据库中查询与任务依赖关系对应的前置任务;
感知器创建模块306,用于当前置任务不属于调度任务流时,创建用于检测前置任务的数据就绪状态的数据感知器;
依赖关系检测模块308,用于当数据感知器检测到前置任务处于数据就绪状态时,确定满足目标调度任务对应的目标任务依赖关系。
本发明实施例提供的任务依赖关系的检测装置,在创建调度任务流和其任务依赖信息之后,可以根据任务依赖信息确定目标调度任务对应的前置任务,并在前置任务不属于该调度任务流时创建数据感知器,从而利用数据感知器检测前置任务是否处于数据就绪状态,当处于数据就绪状态时即可确定满足目标调度任务对应的目标任务依赖关系,从而可以显著改善因前置任务延迟而导致的目标调度任务空跑的问题,有效提高了任务依赖关系的可靠性。
在一种实施方式中,上述装置还包括存储模块,用于:新建包括多个数据集成任务的数据集成任务流;运行数据集成任务流中各个数据集成任务得到集成数据表,以从指定数据源中获取原始任务数据,并将数据集成任务与集成数据表之间的第一映射关系存储至预先建立的数据库;以及,获取运行调度任务得到的调度数据表,并将调度任务与调度数据表之间的第二映射关系存储至数据库。
在一种实施方式中,前置任务查询模块304还用于:获取目标调度任务的任务依赖关系中的数据依赖列表;其中,目标调度任务包括ETL任务;基于数据依赖列表对应的数据表信息,确定预先建立的数据库中与数据表信息对应的任务为目标调度任务对应的前置任务。
在一种实施方式中,感知器创建模块306还用于:判断前置任务对应的数据表信息,是否为除调度任务流之外的其余调度任务流中调度任务对应的数据表信息;如果是,则确定前置任务不属于调度任务流。
在一种实施方式中,感知器创建模块306还用于:从数据库中查找数据表信息对应的任务;基于数据表信息对应的任务,配置生成用于检测前置任务的数据就绪状态的数据感知器。
在一种实施方式中,依赖关系检测模块308还用于:获取目标调度任务的任务依赖关系中的依赖周期;若前置任务在依赖周期对应调度周期的运行实例已执行,则判定前置任务处于数据就绪状态;若前置任务在依赖周期对应调度周期的运行实例未执行,则判定前置任务处于数据未就绪状态。
在一种实施方式中,任务流新建模块302还用于:新建包括多个调度任务的调度任务流,并确定调度任务流的调度周期。
上述装置还包括运行模块,用于:从数据库中拉取运行调度任务流所需的目标任务数据;基于目标任务数据和调度任务流的调度周期,运行调度任务流中各个调度任务;在运行目标调度任务之前,如果确定满足目标调度任务对应的目标任务依赖关系,则基于目标任务数据运行目标调度任务。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明实施例提供了一种服务器,具体的,该服务器包括处理器和存储装置;存储装置上存储有计算机程序,计算机程序在被所述处理器运行时执行如上所述实施方式的任一项所述的方法。
图4为本发明实施例提供的一种服务器的结构示意图,该服务器100包括:处理器40,存储器41,总线42和通信接口43,所述处理器40、通信接口43和存储器41通过总线42连接;处理器40用于执行存储器41中存储的可执行模块,例如计算机程序。
其中,存储器41可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口43(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线42可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器41用于存储程序,所述处理器40在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器40中,或者由处理器40实现。
处理器40可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器40中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器40可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器41,处理器40读取存储器41中的信息,结合其硬件完成上述方法的步骤。
本发明实施例所提供的可读存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见前述方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (11)
1.一种任务依赖关系的检测方法,其特征在于,包括:
新建包括多个调度任务的调度任务流,其中,每个所述调度任务配置有对应的任务依赖关系;
基于所述调度任务流中目标调度任务的任务依赖关系,从预先建立的数据库中查询与所述任务依赖关系对应的前置任务;
当所述前置任务不属于所述调度任务流时,创建用于检测所述前置任务的数据就绪状态的数据感知器;
当所述数据感知器检测到所述前置任务处于数据就绪状态时,确定满足所述目标调度任务对应的目标任务依赖关系。
2.根据权利要求1所述的方法,其特征在于,在所述新建包括多个调度任务的调度任务流的步骤之前,所述方法还包括:
新建包括多个数据集成任务的数据集成任务流;
运行所述数据集成任务流中各个所述数据集成任务得到集成数据表,以从指定数据源中获取原始任务数据,并将所述数据集成任务与所述集成数据表之间的第一映射关系存储至预先建立的数据库;
获取运行调度任务得到的调度数据表,并将所述调度任务与所述调度数据表之间的第二映射关系存储至所述数据库。
3.根据权利要求2所述的方法,其特征在于,所述基于所述调度任务流中目标调度任务的任务依赖关系,从预先建立的数据库中查询与所述任务依赖关系对应的前置任务的步骤,包括:
获取所述目标调度任务的任务依赖关系中的数据依赖列表;其中,所述目标调度任务包括ETL任务;
基于所述数据依赖列表对应的数据表信息,确定预先建立的数据库中与所述数据表信息对应的任务为所述目标调度任务对应的前置任务。
4.根据权利要求3所述的方法,其特征在于,在当所述前置任务不属于所述调度任务流时,创建用于检测所述前置任务的数据就绪状态的数据感知器的步骤之前,包括:
判断所述前置任务对应的数据表信息,是否为除所述调度任务流之外的其余调度任务流中调度任务对应的数据表信息;
如果是,则确定所述前置任务不属于所述调度任务流。
5.根据权利要求3所述的任务依赖关系的检测方法,其特征在于,所述创建用于检测所述前置任务的数据就绪状态的数据感知器的步骤,包括:
从所述数据库中查找所述数据表信息对应的任务;
基于所述数据表信息对应的任务,配置生成用于检测所述前置任务的数据就绪状态的数据感知器。
6.根据权利要求3所述的方法,其特征在于,所述数据感知器检测所述前置任务的数据就绪状态的步骤,包括:
获取所述目标调度任务的任务依赖关系中的依赖周期;
若所述前置任务在所述依赖周期对应调度周期的运行实例已执行,则判定所述前置任务处于数据就绪状态;
若所述前置任务在所述依赖周期对应调度周期的运行实例未执行,则判定所述前置任务处于数据未就绪状态。
7.根据权利要求1所述的方法,其特征在于,所述新建包括多个调度任务的调度任务流的步骤,包括:
新建包括多个调度任务的调度任务流,并确定所述调度任务流的调度周期。
8.根据权利要求7所述的任务依赖关系的检测方法,其特征在于,在所述当所述数据感知器检测到所述前置任务处于数据就绪状态时,确定满足所述目标调度任务对应的目标任务依赖关系之后的步骤,所述方法还包括:
从所述数据库中拉取运行所述调度任务流所需的目标任务数据;
基于所述目标任务数据和所述调度任务流的所述调度周期,运行所述调度任务流中各个所述调度任务;
在运行所述目标调度任务之前,如果确定满足所述目标调度任务对应的目标任务依赖关系,则基于所述目标任务数据运行所述目标调度任务。
9.一种任务依赖关系的检测装置,其特征在于,包括:
任务流新建模块,用于新建包括多个调度任务的调度任务流,其中,每个所述调度任务配置有对应的任务依赖关系;
前置任务查询模块,用于基于所述调度任务流中目标调度任务的任务依赖关系,从预先建立的数据库中查询与所述任务依赖关系对应的前置任务;
感知器创建模块,用于当所述前置任务不属于所述调度任务流时,创建用于检测所述前置任务的数据就绪状态的数据感知器;
依赖关系检测模块,用于当所述数据感知器检测到所述前置任务处于数据就绪状态时,确定满足所述目标调度任务对应的目标任务依赖关系。
10.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1至8任一项所述的任务依赖关系的检测方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现权利要求1至8任一项所述的任务依赖关系的检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210615035.0A CN115061788A (zh) | 2022-05-31 | 2022-05-31 | 任务依赖关系的检测方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210615035.0A CN115061788A (zh) | 2022-05-31 | 2022-05-31 | 任务依赖关系的检测方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115061788A true CN115061788A (zh) | 2022-09-16 |
Family
ID=83198682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210615035.0A Pending CN115061788A (zh) | 2022-05-31 | 2022-05-31 | 任务依赖关系的检测方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115061788A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115904672A (zh) * | 2023-02-23 | 2023-04-04 | 云筑信息科技(成都)有限公司 | 一种用于检测大数据etl任务调度循环依赖的方法 |
CN117235167A (zh) * | 2023-11-14 | 2023-12-15 | 戎行技术有限公司 | 一种应用于etl系统的任务流动态配置方法及系统 |
-
2022
- 2022-05-31 CN CN202210615035.0A patent/CN115061788A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115904672A (zh) * | 2023-02-23 | 2023-04-04 | 云筑信息科技(成都)有限公司 | 一种用于检测大数据etl任务调度循环依赖的方法 |
CN117235167A (zh) * | 2023-11-14 | 2023-12-15 | 戎行技术有限公司 | 一种应用于etl系统的任务流动态配置方法及系统 |
CN117235167B (zh) * | 2023-11-14 | 2024-01-30 | 戎行技术有限公司 | 一种应用于etl系统的任务流动态配置方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115061788A (zh) | 任务依赖关系的检测方法、装置、服务器及存储介质 | |
CN110908641B (zh) | 基于可视化的流计算平台、方法、设备和存储介质 | |
CN109656963B (zh) | 元数据获取方法、装置、设备及计算机可读存储介质 | |
JP2017515180A (ja) | ビッグ・データ・リポジトリにおけるデータ・セットの処理 | |
US11314808B2 (en) | Hybrid flows containing a continous flow | |
US11593357B2 (en) | Databases and methods of storing, retrieving, and processing data | |
WO2014089190A1 (en) | Integrating event processing with map-reduce | |
WO2020238597A1 (zh) | 基于Hadoop的数据更新方法、装置、系统及介质 | |
WO2022048648A1 (zh) | 实现自动构建模型的方法、装置、电子设备和存储介质 | |
CN110781180B (zh) | 一种数据筛选方法和数据筛选装置 | |
CN111125178A (zh) | 一种数据查询方法、装置、终端、presto查询引擎及存储介质 | |
CN112527459A (zh) | 一种基于Kubernetes集群的日志分析方法及装置 | |
CN108345603B (zh) | 一种sql语句解析方法及装置 | |
CN115080570A (zh) | 一种基于图数据库的字段血缘处理方法及系统 | |
CN115729965A (zh) | 信息流处理方法、装置、流服务器及存储介质 | |
CN115237706A (zh) | 埋点数据处理方法、装置、电子设备及存储介质 | |
CN115510139A (zh) | 数据查询方法和装置 | |
CN110865877B (zh) | 一种任务请求的响应方法及设备 | |
US20170337644A1 (en) | Data driven invocation of realtime wind market forecasting analytics | |
CN112862245A (zh) | 数据交换方法、装置以及电子设备 | |
CN111782479A (zh) | 日志处理方法、装置、电子设备及计算机可读存储介质 | |
CN110837509A (zh) | 一种调度依赖的方法、装置、设备以及存储介质 | |
CN112015963A (zh) | 基于大数据的网络爬虫系统 | |
CN112749164A (zh) | 数据质量分析方法、装置及电子设备 | |
CN111475505A (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 |