CN112434061B - 支持循环依赖的任务调度方法和系统 - Google Patents
支持循环依赖的任务调度方法和系统 Download PDFInfo
- Publication number
- CN112434061B CN112434061B CN202010865327.0A CN202010865327A CN112434061B CN 112434061 B CN112434061 B CN 112434061B CN 202010865327 A CN202010865327 A CN 202010865327A CN 112434061 B CN112434061 B CN 112434061B
- Authority
- CN
- China
- Prior art keywords
- task
- query
- nodes
- dependency
- node
- 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
- 238000000034 method Methods 0.000 title claims abstract description 50
- 125000004122 cyclic group Chemical group 0.000 title claims abstract description 10
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 20
- 238000005192 partition Methods 0.000 claims description 37
- 230000002159 abnormal effect Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 9
- 238000000605 extraction Methods 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
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/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24544—Join order optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种支持循环依赖的任务调度方法,所述方法包括:获取一个或多个数据库查询文件,所述一个或多个数据库查询文件包括多个查询语句;遍历和解析所述多个查询语句;提取各个查询语句之间的相对关系;及根据各个查询语句和各个查询语句之间的相对关系,生成用于任务调度的有向无环图;其中,所述有向无环图包括多个任务节点和所述多个任务节点之间的依赖关系,当所述多个查询语句包括递归查询语句时,所述递归查询语句的每次递归操作分别对应所述多个任务节点中的其中一个任务节点。本申请实施例将调用的上下游自身分别视为两个实体,支持“自己调用自己”,避免递归语句在有向无环图生成过程中被判定为死循环的问题。
Description
技术领域
本申请实施例涉及数据库查询技术领域,尤其涉及一种支持循环依赖的任务调度方法、系统、计算机设备及计算机可读存储介质。
背景技术
随着数据规模的不断扩大,基于数据库技术的管理控制和查询开始占用大量的时间和精力。以当前市面上的ETL(Extract-Transform-Load,数据抽取、转换和加载)调度框架为例,其往往只能针对单条SQL(Structured Query Language,结构化查询语言)进行任务编辑。另外,当需要处理大量SQL时,需要来回切换,效率极差,容易任务编辑错误,而且对于调度任务依赖自身等情况没有很好的处理方法,比如当其中一条SQL会调用自身的时候,调度框架会判断陷入死循环无法启动任务。
发明内容
本申请实施例的目的是提供一种支持循环依赖的任务调度方法、系统、计算机设备及计算机可读存储介质,用于解决以下问题:当前处理查询语句效率差、容易任务编辑错误,且不支持依赖自身的调用任务。
本申请实施例的一个方面提供了一种支持循环依赖的任务调度方法,所述方法包括:获取一个或多个数据库查询文件,所述一个或多个数据库查询文件包括多个查询语句;遍历和解析所述多个查询语句;提取各个查询语句之间的相对关系;及根据各个查询语句和各个查询语句之间的相对关系,生成用于任务调度的有向无环图;其中,所述有向无环图包括多个任务节点和所述多个任务节点之间的依赖关系,当所述多个查询语句包括递归查询语句时,所述递归查询语句的每次递归操作分别对应所述多个任务节点中的其中一个任务节点。
可选的,获取一个或多个数据库查询文件,包括:获取文件夹的文件夹参数,所述文件夹包括所述一个或多个数据库查询文件;及通过所述文件的文件夹参数,导入所述一个或多个数据库查询文件。
可选的,所述递归查询语句用于循环执行N个递归查询操作且与多个关联查询语句之间具有相对关系,其中,所述多个关联查询语句对应于所述有向无环图中的多个关联任务节点;根据各个查询语句和各个查询语句之间的相对关系,生成有向无环图,包括:配置与所述N个递归查询操作一一对应的N个分拆任务节点;根据N个分拆任务节点对应的N个分区信息,确定所述N个分拆任务节点之间的依赖关系;及根据N个分拆任务节点对应的N个分区信息,配置所述多个关联任务节点和所述N个分拆任务节点之间的依赖关系。
可选的,还包括:获取所述多个任务节点中的多个没有上游依赖关系的任务节点,所述多个没有上游依赖关系的任务节点包括根任务节点和非根任务节点;将所述非根任务节点确定为第一类异常任务节点,并对所述非根任务节点执行以下操作:禁止以所述非根任务节点为起始任务节点启动所述数据库查询操作;及在检测到以所述根任务节点为所述起始任务节点启动所述数据库查询操作时,则启动所述非根任务节点。
可选的,还包括:获取所述多个任务节点中的多个没有下游依赖关系的任务节点,所述多个没有下游依赖关系的任务节点包括结束任务节点和非结束任务节点;及将所述非结束任务节点确定为第二类异常任务节点,并基于所述非结束任务节点执行相应的操作。
可选的,还包括:确定所述有向无环图是否包括错误依赖关系;及如果所述有向无环图包括所述错误依赖关系,则基于所述错误依赖关系执行相应的操作。
可选的,确定所述有向无环图是否包括错误依赖关系,包括:获取各个任务节点的分区时间信息;根据所述各个任务节点的分区时间信息,判断是否存在两个任务节点中的分区时间较早的任务节点调用分区时间较晚的另一个任务节点;及如果存在两个任务节点中的分区时间较早的任务节点调用分区时间较晚的另一个任务节点,则确定这两个任务节点之间的依赖关系为所述错误依赖关系。
可选的,还包括:确定所述多个任务节点是否包括具有多路输出的任务节点;及如果所述多个任务节点包括具有多路输出的任务节点,则为这个具有多路输出的任务节点配置多个相应的下游任务节点,并在这个具有多个输出的任务节点和各个相应的下游任务节点之间建立相应的依赖关系。
本申请实施例的一个方面又提供了一种支持循环依赖的任务调度系统,所述支持循环依赖的任务调度系统包括:获取模块,用于获取一个或多个数据库查询文件,所述一个或多个数据库查询文件包括多个查询语句;解析模块,用于遍历和解析所述多个查询语句;提取模块,用于提取各个查询语句之间的相对关系;及生成模块,用于根据各个查询语句和各个查询语句之间的相对关系,生成用于任务调度的有向无环图;其中,所述有向无环图包括多个任务节点和所述多个任务节点之间的依赖关系,当所述多个查询语句包括递归查询语句时,所述递归查询语句的每次递归操作分别对应所述多个任务节点中的其中一个任务节点。
本申请实施例的一个方面又提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述支持循环依赖的任务调度方法的步骤。
本申请实施例的一个方面又提供了一种计算机可读存储介质,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述支持循环依赖的任务调度方法的步骤。
本申请实施例提供的支持循环依赖的任务调度方法、系统、设备及计算机可读存储介质,根据每次递归操作生成相应的任务节点,如第一次递归操作生成任务节点D1,第二次递归操作生成任务节点D2,…;在各个递归操作对应的任务节点之间建立依赖关系,如在任务节点D1和任务节点D2之间建立依赖关系。即,本申请实施例通过将调用的上下游自身分别视为两个实体(任务节点),支持“自己调用自己”,避免递归语句在有向无环图生成过程中被判定为死循环的问题。
附图说明
图1示意性示出了根据本申请实施例一的支持循环依赖的任务调度方法的流程图;
图2为图1中步骤S100的子步骤流程图;
图3为图1中步骤S106的子步骤流程图;
图4为一个有向无环图的示意图;
图5示意性示出了根据本申请实施例一的支持循环依赖的任务调度方法的新增流程图;
图6示意性示出了根据本申请实施例一的支持循环依赖的任务调度方法的另一新增流程图;
图7示意性示出了根据本申请实施例一的支持循环依赖的任务调度方法的另一新增流程图;
图8为图7中步骤S700的子步骤流程图;
图9示意性示出了根据本申请实施例一的支持循环依赖的任务调度方法的另一新增流程图;
图10示意性示出了根据本申请实施例二的支持循环依赖的任务调度系统的框图;及
图11示意性示出了根据本申请实施例三的适于实现支持循环依赖的任务调度方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
当前市面上的ETL(Extract-Transform-Load,数据抽取、转换和加载)调度框架往往只能针对单条SQL进行任务编辑,当处理大量的SQL时,需要来回切换,效率极差,也容易产生任务编辑错误。另一方面,往往上下游的关系也需要手动配置,绘制他们之间的关系。并且只能处理单个下游的调度任务,而且对于调度任务依赖自身等情况没有很好的处理方法。比如当一条SQL会调用自身的时候,往往调度框架会判断陷入死循环无法启动任务。以下将提供一些实施例以解决这些问题。
以下为本申请的术语解释:
有向无环图(directed acyclic graph,DAG),DAG中各个边的方向是统一的,即均朝向同一方向,全部边都是从下游指向上游,或者都是从上游指向下游。一般来说,为了便于观察,DAG中的边统一采用从上游指向下游的方向的方式,来展示各个任务节点之间的依赖关系。依赖关系是具有方向性,边的方向表示了依赖关系的方向性。例如,在任务节点A到任务节点B之间,存在一条由任务节点A指向任务节点B的边,那么说明任务节点B依赖于任务节点A。
计算机设备2可以被配置为访问提供数据处理任务。台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。
实施例一
图1示意性示出了根据本申请实施例一的支持循环依赖的任务调度方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以计算机设备2为执行主体进行示例性描述。
如图1所示,该支持循环依赖的任务调度方法可以包括步骤S100~S106,其中:
步骤S100,获取一个或多个数据库查询文件,所述一个或多个数据库查询文件包括多个查询语句。
每个数据查询文件中包括多个查询语句,所述查询语句可以是SQL(StructuredQueryLanguage,结构化查询语言)语句。需要说明的是,本申请也可以是其他类型的数据库查询语句。
不同于单个的查询语句,大量的查询语句往往难于任务编辑和管理。现有技术往往是通过Web页面进行任务编辑,其需要将查询语句逐条录入和操作,且通过Web页面的任务编辑使得所有操作均被限制在Web页面中,导致其面对大量的查询语句时,管理和任务编辑不方便、灵活性差。在示例性的实施例中,可以通过本地任务编辑、文件夹管理和批量加载服务,来解决上述管理和任务编辑不方便、灵活性差等问题。例如,开发人员可以在本地任务编辑多个数据库查询文件、通过文件夹管理所述多个数据库查询文件,并将所述多个数据库查询文件批量加载到计算机设备2的内存中。关于文件夹管理,在于将不同的数据库查询文件存储在相应的文件夹中,并对文件夹做分层(分级)管理,如子文件夹套父文件夹,从而使得大量任务能够被有组织的管理起来。
如图2所示,以下为计算机设备2为用于配套本地任务编辑、文件夹管理和批量加载服务的示例性步骤。其中,步骤S200,获取文件夹的文件夹参数,所述文件夹包括所述一个或多个数据库查询文件;及步骤S202,通过所述文件的文件夹参数,导入所述一个或多个数据库查询文件。在本实施例中,计算机设备2可以通过文件夹批量获取多个数据库查询文件,极大了方便了数据库查询文件获取效率。进一步的,如果所述多个数据库查询文件是在所述文件夹中通过多个不同层级的子文件夹进行管理的,各个子文件夹之间的关系亦可以作为生成任务整体依赖关系的依据。
步骤S102,遍历和解析所述多个查询语句。
在接收到所述一个或多个数据库查询文件,计算机设备2对所有数据库查询文件进行遍历和解析,以得到所有的查询语句。
步骤S104,提取各个查询语句之间的相对关系。
所述相对关系可以各种关系,例如:时间上的前后依赖关系、调用与被调用的上下游依赖关系。例如,查询语句A需要依赖查询语句B输出的数据,则认为查询语句A和查询语句B之间存在上下游依赖关系。
步骤S106,根据各个查询语句和各个查询语句之间的相对关系,生成用于任务调度的有向无环图。其中,所述有向无环图包括多个任务节点和所述多个任务节点之间的依赖关系,当所述多个查询语句包括递归查询语句时,所述递归查询语句的每次递归操作分别对应所述多个任务节点中的其中一个任务节点。
计算机设备2可以根据每个查询语句生成相应的一个或多个任务节点。
即,每个查询语句可以对应生成一个或多个任务节点。其中,每个任务节点可以通过“时间”+“表名”进行认定。举例而言:将第T+1天的某个任务节点(如,用于生成第T+1天的表A的节点)认定为“表A+第T+1天”,将第T天的某个任务节点(如,用于生成第T天的表A的节点)认定为“表A+第T天”,这样可以使得处于不同时间节点的同类任务节点可以区别和正确引用。
计算机设备2可以根据各个查询语句之间的相对关系,确定各个任务节点之间的依赖关系。例如,所述查询语句A和所述查询语句B之间存在上下游依赖关系,则计算机设备2可以在所述查询语句A对应的任务节点A’和所述查询语句B对应的任务节点B’之间建立上下游依赖关系。
当所述多个查询语句包括递归查询语句时,由于递归查询语句可能执行多次递归操作且每次递归操作又需要引用上一次递归操作的操作结果,在现有技术的DAG生成操作中往往会被判定为“自己调用自己”的死循环。为解决这一个问题,本实施例中的计算机设备2执行以下操作:根据每次递归操作生成相应的任务节点,如第一次递归操作生成任务节点D1,第二次递归操作生成任务节点D2,…;在各个递归操作对应的任务节点之间建立依赖关系,如在任务节点D1和任务节点D2之间建立依赖关系。即,支持“自己调用自己”,将调用的上下游自身分别视为两个实体(任务节点)。
在示例性的实施例中,所述递归查询语句用于循环执行N个递归查询操作且与多个关联查询语句之间具有相对关系,其中,所述多个关联查询语句对应于所述有向无环图中的多个关联任务节点。如图3所示,步骤S106可以步骤S300~S304,其中:步骤S300,配置与所述N个递归查询操作一一对应的N个分拆任务节点;步骤S302,根据N个分拆任务节点对应的N个分区信息,确定所述N个分拆任务节点之间的依赖关系;步骤S304,根据N个分拆任务节点对应的N个分区信息,配置所述多个关联任务节点和所述N个分拆任务节点之间的依赖关系。
举例而言:
当出现a调用a的情况时;
a节点会被分拆为a1,a2,a3,a4等递归节点时;
a1可能就转变为a(2020-05-15)节点;
a2可能就转变为a(2020-05-14)节点;
a3可能就转变为a(2020-05-13)节点;
以此类推。
其中,括号内的是分区标识,是在创建表时设定的。原语句a调用a就会被转化为a(2020-05-14)调用a(2020-05-13),从而不会产生歧义,并形成了a(2020-05-13)<-a(2020-05-14)这样的链路。
当某一个上下游尝试也调用a时,如果a已经被分解为a1~an后,则自动寻找a(x)。“x”为分区信息;然后,把原本的上下游语句自动进行替换,比如将“从a的字段b”转化为“从a(x)的字段b”。
需要说明的是,本例中的分区标识为时间信息。应理解,分区标识也可以是其他信息。
在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图。如前文所说,有向无环图由多个任务节点构成的,其中有且只有一个根任务节点(顶点),其余均为非根任务节点。对于这些非根任务节点(可能是关联于其他系统的任务节点)来说,其虽然处于有向无环图中的最上游位置,但是仍然无法正确地自行启动和运行。因此,计算机设备2需要找到处于最上游位置的根任务节点和非根任务节点,以配置这些非根任务节点的启动方式。如图4所示,以“斜线”填充的圆形,代表拓扑图中的根任务节点。以“菱形”填充的圆形,代表拓扑图中的非根任务节点。
在示例性的实施例中,如图5所示,该支持循环依赖的任务调度方法还可以包括步骤S500~S502,其中:步骤S500,获取所述多个任务节点中的多个没有上游依赖关系的任务节点,所述多个没有上游依赖关系的任务节点包括根任务节点和非根任务节点;步骤S502,将所述非根任务节点确定为第一类异常任务节点,并对所述非根任务节点执行以下操作:禁止以所述非根任务节点为起始任务节点启动所述数据库查询操作;及在检测到以所述根任务节点为所述起始任务节点启动所述数据库查询操作时,则启动所述非根任务节点。通过上述方式可以正确地启动和运行非根任务节点。
同样的,由于有向无环图由多个任务节点构成的,其可能包括最下游的任务节点(如图论中的终点)。这些最下游的任务节点应该是有意义的任务节点,比如,用于被其他其他系统调用,如将数据写入到HIVE、MySQL等数据库中。但是,当某个最下游的任务节点没有起到任何作用时,则属于浪费计算资源的无意义的任务节点,以下将提供一个示例性的实施例来描述这些任务节点的处理方式,以节省计算资源。在以下实施例中,将“最下游的任务节点中的有意义的任务节点”称之为“结束任务节点”,将“最下游的任务节点中的无意义的任务节点”称之为“非结束任务节点”。如图4所示,以“黑色”填充的圆形,表示本拓扑图中的“非结束任务节点”。
在示例性的实施例中,如图6所示,该支持循环依赖的任务调度方法还可以包括步骤S600~S602,其中:步骤S600,获取所述多个任务节点中的多个没有下游依赖关系的任务节点,所述多个没有下游依赖关系的任务节点包括结束任务节点和非结束任务节点;及步骤S602,将所述非结束任务节点确定为第二类异常任务节点,并基于所述非结束任务节点执行相应的操作。本实施例中,计算机设备2通过依赖关系查找所有最下游的任务节点(即多个没有下游依赖关系的任务节点),并将其中的非结束任务节点(即无意义的任务节点)确定为第二类异常节点,以进行告警或裁剪等操作。
在示例性的实施例中,在有向无环图中,各个任务节点之间是通过依赖关系进行关联的,如果有些依赖关系出现错乱,则会导致无法生成有向无环图无法或生成错误的有向无环图。为避免这种依赖关系导致的错误,在示例性的实施例中,如图7所示,该支持循环依赖的任务调度方法还可以包括步骤S700~S702,其中:步骤S700,确定所述有向无环图是否包括错误依赖关系;步骤S702,如果所述有向无环图包括所述错误依赖关系,则基于所述错误依赖关系执行相应的操作。本实施例中,通过排除不同任务节点之间的错误依赖关系,来纠正所述有向无环图,以保证有向无环图的正确性。
所述错误依赖关系可能由各种因素导致,例如:(1)死循环;(2)任务节点的上游依赖不存在:(3)任务节点下游没有被调用;(4)调用时间错乱,稍早的时间点的任务节点调用到未来时间点的任务节点.。
在示例性的实施例中,所述错误依赖关系可以通过多个方式进行确定,如图8所示,步骤S700可以通过步骤S800~S802实现:步骤S800,获取各个任务节点的分区时间信息;步骤S802,根据所述各个任务节点的分区时间信息,判断是否存在两个任务节点中的分区时间较早的任务节点调用分区时间较晚的另一个任务节点;步骤S804,如果存在两个任务节点中的分区时间较早的任务节点调用分区时间较晚的另一个任务节点,则确定这两个任务节点之间的依赖关系为所述错误依赖关系。
在示例性的实施例中,一条查询语句可能具有多路输出。为应对该上述情形,如图9所示,以下提供了示例性的任务分配步骤:步骤S900,确定所述多个任务节点是否包括具有多路输出的任务节点;步骤S902,如果所述多个任务节点包括具有多路输出的任务节点,则为这个具有多路输出的任务节点配置多个相应的下游任务节点,并在这个具有多个输出的任务节点和各个相应的下游任务节点之间建立相应的依赖关系。在本实施例中,计算机设备2能处理多路输出,一条语句同时有多个下游也能协同整体异步的进行执行,不会造成有一个以上的输出识别不到或无法正确异步调用的问题。
实施例二
图10示意性示出了根据本申请实施例二的支持循环依赖的任务调度系统的框图,该支持循环依赖的任务调度系统可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
如图10所示,该支持循环依赖的任务调度系统1000可以包括获取模块1010、解析模块1020、提取模块1030和生成模块1060,其中:
获取模块1010,用于获取一个或多个数据库查询文件,所述一个或多个数据库查询文件包括多个查询语句;
解析模块1020,用于遍历和解析所述多个查询语句;
提取模块1030,用于提取各个查询语句之间的相对关系;及
生成模块1040,用于根据各个查询语句和各个查询语句之间的相对关系,生成用于任务调度的有向无环图;
其中,所述有向无环图包括多个任务节点和所述多个任务节点之间的依赖关系,当所述多个查询语句包括递归查询语句时,所述递归查询语句的每次递归操作分别对应所述多个任务节点中的其中一个任务节点。
在示例性的实施例中,所述获取模块1010,用于获取文件夹的文件夹参数,所述文件夹包括所述一个或多个数据库查询文件;及通过所述文件的文件夹参数,导入所述一个或多个数据库查询文件。
在示例性的实施例中,所述递归查询语句用于循环执行N个递归查询操作且与多个关联查询语句之间具有相对关系,其中,所述多个关联查询语句对应于所述有向无环图中的多个关联任务节点。所述生成模块1040还用于:配置与所述N个递归查询操作一一对应的N个分拆任务节点;根据N个分拆任务节点对应的N个分区信息,确定所述N个分拆任务节点之间的依赖关系;及根据N个分拆任务节点对应的N个分区信息,配置所述多个关联任务节点和所述N个分拆任务节点之间的依赖关系。。
在示例性的实施例中,任务调度系统1000可以包括调度模块,用于:获取所述多个任务节点中的多个没有上游依赖关系的任务节点,所述多个没有上游依赖关系的任务节点包括根任务节点和非根任务节点;将所述非根任务节点确定为第一类异常任务节点,并对所述非根任务节点执行以下操作:禁止以所述非根任务节点为起始任务节点启动所述数据库查询操作;及在检测到以所述根任务节点为所述起始任务节点启动所述数据库查询操作时,则启动所述非根任务节点。
在示例性的实施例中,任务调度系统1000可以包括异常处理模块,用于:获取所述多个任务节点中的多个没有下游依赖关系的任务节点,所述多个没有下游依赖关系的任务节点包括结束任务节点和非结束任务节点;及将所述非结束任务节点确定为第二类异常任务节点,并基于所述非结束任务节点执行相应的操作。
在示例性的实施例中,任务调度系统1000可以包括异常处理模块,用于:确定所述有向无环图是否包括错误依赖关系;及如果所述有向无环图包括所述错误依赖关系,则基于所述错误依赖关系执行相应的操作。
在示例性的实施例中,任务调度系统1000可以包括异常处理模块,用于:获取各个任务节点的分区时间信息;根据所述各个任务节点的分区时间信息,判断是否存在两个任务节点中的分区时间较早的任务节点调用分区时间较晚的另一个任务节点;及如果存在两个任务节点中的分区时间较早的任务节点调用分区时间较晚的另一个任务节点,则确定这两个任务节点之间的依赖关系为所述错误依赖关系。
在示例性的实施例中,所述生成模块1040,还用于:确定所述多个任务节点是否包括具有多路输出的任务节点;及如果所述多个任务节点包括具有多路输出的任务节点,则为这个具有多路输出的任务节点配置多个相应的下游任务节点,并在这个具有多个输出的任务节点和各个相应的下游任务节点之间建立相应的依赖关系。
实施例三
图11示意性示出了根据本申请实施例三的适于实现支持循环依赖的任务调度方法的计算机设备2的硬件架构示意图。本实施例中,计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图11所示,计算机设备2至少包括但不限于:可通过系统总线相互通信链接存储器1110、处理器1120、网络接口1130、震动元件1140。其中:
存储器1110至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器1110可以是计算机设备2的内部存储模块,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器1110也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(FlashCard)等。当然,存储器1110还可以既包括计算机设备2的内部存储模块也包括其外部存储设备。本实施例中,存储器1110通常用于存储安装于计算机设备2的操作系统和各类应用软件,例如支持循环依赖的任务调度方法的程序代码等。此外,存储器1110还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器1120在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器1120通常用于控制计算机设备2的总体操作,例如执行与计算机设备2进行数据交互或者通信相关的控制和处理等。本实施例中,处理器1120用于运行存储器1110中存储的程序代码或者处理数据。
网络接口1130可包括无线网络接口或有线网络接口,该网络接口1130通常用于在计算机设备2与其他计算机设备之间建立通信链接。例如,网络接口1130用于通过网络将计算机设备2与外部终端相连,在计算机设备2与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(GlobalSystem of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code DivisionMultiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图11仅示出了具有部件1110-1130的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器1110中的支持循环依赖的任务调度方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器1120)所执行,以完成本申请实施例。
实施例四
本申请还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的支持循环依赖的任务调度方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中支持循环依赖的任务调度方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (11)
1.一种支持循环依赖的任务调度方法,其特征在于,所述方法包括:
获取一个或多个数据库查询文件,所述一个或多个数据库查询文件包括多个查询语句;
遍历和解析所述多个查询语句;
提取各个查询语句之间的相对关系;及
根据各个查询语句和各个查询语句之间的相对关系,生成用于任务调度的有向无环图;
其中,所述有向无环图包括多个任务节点和所述多个任务节点之间的依赖关系,当所述多个查询语句包括递归查询语句时,所述递归查询语句的每次递归操作分别对应所述多个任务节点中的其中一个任务节点。
2.根据权利要求1所述的支持循环依赖的任务调度方法,其特征在于,获取一个或多个数据库查询文件,包括:
获取文件夹的文件夹参数,所述文件夹包括所述一个或多个数据库查询文件;及
通过所述文件的文件夹参数,导入所述一个或多个数据库查询文件。
3.根据权利要求1所述的支持循环依赖的任务调度方法,其特征在于,所述递归查询语句用于循环执行N个递归查询操作且与多个关联查询语句之间具有相对关系,其中,所述多个关联查询语句对应于所述有向无环图中的多个关联任务节点;根据各个查询语句和各个查询语句之间的相对关系,生成有向无环图,包括:
配置与所述N个递归查询操作一一对应的N个分拆任务节点;
根据N个分拆任务节点对应的N个分区信息,确定所述N个分拆任务节点之间的依赖关系;及
根据N个分拆任务节点对应的N个分区信息,配置所述多个关联任务节点和所述N个分拆任务节点之间的依赖关系。
4.根据权利要求1至3任意一项所述的支持循环依赖的任务调度方法,其特征在于,还包括:
获取所述多个任务节点中的多个没有上游依赖关系的任务节点,所述多个没有上游依赖关系的任务节点包括根任务节点和非根任务节点;
将所述非根任务节点确定为第一类异常任务节点,并对所述非根任务节点执行以下操作:
禁止以所述非根任务节点为起始任务节点启动数据库查询操作;及
在检测到以所述根任务节点为所述起始任务节点启动所述数据库查询操作时,则启动所述非根任务节点。
5.根据权利要求1至3任意一项所述的支持循环依赖的任务调度方法,其特征在于,还包括:
获取所述多个任务节点中的多个没有下游依赖关系的任务节点,所述多个没有下游依赖关系的任务节点包括结束任务节点和非结束任务节点;及
将所述非结束任务节点确定为第二类异常任务节点,并基于所述非结束任务节点执行相应的操作。
6.根据权利要求1至3任意一项所述的支持循环依赖的任务调度方法,其特征在于,还包括:
确定所述有向无环图是否包括错误依赖关系;及
如果所述有向无环图包括所述错误依赖关系,则基于所述错误依赖关系执行相应的操作。
7.根据权利要求6所述的支持循环依赖的任务调度方法,其特征在于,确定所述有向无环图是否包括错误依赖关系,包括:
获取各个任务节点的分区时间信息;
根据所述各个任务节点的分区时间信息,判断是否存在两个任务节点中的分区时间较早的任务节点调用分区时间较晚的另一个任务节点;及
如果存在两个任务节点中的分区时间较早的任务节点调用分区时间较晚的另一个任务节点,则确定这两个任务节点之间的依赖关系为所述错误依赖关系。
8.根据权利要求1至3任意一项所述的支持循环依赖的任务调度方法,其特征在于,还包括:
确定所述多个任务节点是否包括具有多路输出的任务节点;及
如果所述多个任务节点包括具有多路输出的任务节点,则为这个具有多路输出的任务节点配置多个相应的下游任务节点,并在这个具有多个输出的任务节点和各个相应的下游任务节点之间建立相应的依赖关系。
9.一种支持循环依赖的任务调度系统,其特征在于,包括:
获取模块,用于获取一个或多个数据库查询文件,所述一个或多个数据库查询文件包括多个查询语句;
解析模块,用于遍历和解析所述多个查询语句;
提取模块,用于提取各个查询语句之间的相对关系;及
生成模块,用于根据各个查询语句和各个查询语句之间的相对关系,生成用于任务调度的有向无环图;
其中,所述有向无环图包括多个任务节点和所述多个任务节点之间的依赖关系,当所述多个查询语句包括递归查询语句时,所述递归查询语句的每次递归操作分别对应所述多个任务节点中的其中一个任务节点。
10.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求1至8中任一项所述的支持循环依赖的任务调度方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行权利要求1至8中任一项所述的支持循环依赖的任务调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010865327.0A CN112434061B (zh) | 2020-08-25 | 2020-08-25 | 支持循环依赖的任务调度方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010865327.0A CN112434061B (zh) | 2020-08-25 | 2020-08-25 | 支持循环依赖的任务调度方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112434061A CN112434061A (zh) | 2021-03-02 |
CN112434061B true CN112434061B (zh) | 2024-04-16 |
Family
ID=74690675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010865327.0A Active CN112434061B (zh) | 2020-08-25 | 2020-08-25 | 支持循环依赖的任务调度方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112434061B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925624B (zh) * | 2021-03-17 | 2024-08-16 | 中国电子系统技术有限公司 | 一种数据处理任务的配置方法以及装置 |
CN113392123B (zh) * | 2021-06-10 | 2024-07-19 | 中国光大银行股份有限公司 | 一种sql语句处理方法及装置 |
CN113326402B (zh) * | 2021-06-16 | 2022-07-19 | 上海哔哩哔哩科技有限公司 | 有向无环图生成方法及系统 |
CN113128143B (zh) * | 2021-06-17 | 2021-09-28 | 北京燧原智能科技有限公司 | Ai处理器的仿真方法、装置、计算机设备及存储介质 |
CN113761746B (zh) * | 2021-09-08 | 2023-07-25 | 北京世冠金洋科技发展有限公司 | 一种代数环的识别方法及装置 |
CN114328584A (zh) * | 2021-12-29 | 2022-04-12 | 北京贝壳时代网络科技有限公司 | 业务调用方法、装置及可读存储介质 |
CN117235167B (zh) * | 2023-11-14 | 2024-01-30 | 戎行技术有限公司 | 一种应用于etl系统的任务流动态配置方法及系统 |
CN117610320B (zh) * | 2024-01-23 | 2024-04-02 | 中国人民解放军国防科技大学 | 有向无环图工作流引擎循环调度方法、装置和设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915251A (zh) * | 2015-06-05 | 2015-09-16 | 北京京东尚科信息技术有限公司 | 任务调度方法及装置 |
CN105404690A (zh) * | 2015-12-16 | 2016-03-16 | 华为技术服务有限公司 | 查询数据库的方法和装置 |
CN105719126A (zh) * | 2016-01-22 | 2016-06-29 | 上海晶赞科技发展有限公司 | 一种基于生命周期模型的互联网大数据任务调度的系统及方法 |
CN106791928A (zh) * | 2016-12-29 | 2017-05-31 | 上海幻电信息科技有限公司 | 一种自适应的高性能视频转码系统和方法 |
CN107239335A (zh) * | 2017-06-09 | 2017-10-10 | 中国工商银行股份有限公司 | 分布式系统的作业调度系统及方法 |
CN108292323A (zh) * | 2016-01-08 | 2018-07-17 | 微软技术许可有限责任公司 | 使用数据源的元数据的数据库操作 |
CN109445926A (zh) * | 2018-11-09 | 2019-03-08 | 杭州玳数科技有限公司 | 数据任务调度方法及数据任务调度系统 |
CN110402431A (zh) * | 2017-03-23 | 2019-11-01 | 亚马逊科技公司 | 使用有向无环图进行事件驱动的调度 |
CN110554909A (zh) * | 2019-09-06 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 任务的调度处理方法、装置及计算机设备 |
CN110909077A (zh) * | 2019-11-05 | 2020-03-24 | 四川中讯易科科技有限公司 | 一种分布式存储方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093493B (zh) * | 2006-06-23 | 2011-08-31 | 国际商业机器公司 | 数据库查询语言转换方法、转换装置 |
US9286044B2 (en) * | 2014-06-27 | 2016-03-15 | International Business Machines Corporation | Hybrid parallelization strategies for machine learning programs on top of MapReduce |
US10853746B2 (en) * | 2015-05-14 | 2020-12-01 | Atlassian Pty Ltd. | Systems and methods for scheduling work items |
US10210170B2 (en) * | 2017-01-28 | 2019-02-19 | Microsoft Technology Licensing, Llc | Chunk storage deduplication using graph structures |
-
2020
- 2020-08-25 CN CN202010865327.0A patent/CN112434061B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915251A (zh) * | 2015-06-05 | 2015-09-16 | 北京京东尚科信息技术有限公司 | 任务调度方法及装置 |
CN105404690A (zh) * | 2015-12-16 | 2016-03-16 | 华为技术服务有限公司 | 查询数据库的方法和装置 |
CN108292323A (zh) * | 2016-01-08 | 2018-07-17 | 微软技术许可有限责任公司 | 使用数据源的元数据的数据库操作 |
CN105719126A (zh) * | 2016-01-22 | 2016-06-29 | 上海晶赞科技发展有限公司 | 一种基于生命周期模型的互联网大数据任务调度的系统及方法 |
CN106791928A (zh) * | 2016-12-29 | 2017-05-31 | 上海幻电信息科技有限公司 | 一种自适应的高性能视频转码系统和方法 |
CN110402431A (zh) * | 2017-03-23 | 2019-11-01 | 亚马逊科技公司 | 使用有向无环图进行事件驱动的调度 |
CN107239335A (zh) * | 2017-06-09 | 2017-10-10 | 中国工商银行股份有限公司 | 分布式系统的作业调度系统及方法 |
CN109445926A (zh) * | 2018-11-09 | 2019-03-08 | 杭州玳数科技有限公司 | 数据任务调度方法及数据任务调度系统 |
CN110554909A (zh) * | 2019-09-06 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 任务的调度处理方法、装置及计算机设备 |
CN110909077A (zh) * | 2019-11-05 | 2020-03-24 | 四川中讯易科科技有限公司 | 一种分布式存储方法 |
Non-Patent Citations (3)
Title |
---|
An extension to DAG based scheduling for partial dependent tasks An Approach to optimize partial dependent tasks in a distributed system;M.A Shweta等;《2012 Annual IEEE India Conference (INDICON)》;第193-197页 * |
关联规则算法Apriori的优化及基于Spark的并行化研究;闫梦洁;《中国优秀硕士学位论文全文数据库信息科技辑》(第1期);第I138-1978页 * |
多核平台两级抢占式固定优先级DAG递归调度;骆亮;《微电子学与计算机》;第37卷(第4期);第70-75页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112434061A (zh) | 2021-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112434061B (zh) | 支持循环依赖的任务调度方法和系统 | |
CN110427368B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US8799230B2 (en) | Method and system for centralized issue tracking | |
CN110175157B (zh) | 一种列存储文件的查询方法及查询装置 | |
CN108415998B (zh) | 应用依赖关系更新方法、终端、设备及存储介质 | |
CN111818175B (zh) | 企业服务总线配置文件生成方法、装置、设备和存储介质 | |
CN111309593A (zh) | Json接口校验的方法、装置、设备及计算机可读存储介质 | |
CN111124872A (zh) | 基于差异代码分析的分支检测方法、装置及存储介质 | |
CN115016784B (zh) | 低代码应用复用方法、应用解析系统、设备及存储介质 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN115525534A (zh) | 基于swagger的接口测试的测试用例生成方法、生成平台 | |
CN116048609A (zh) | 配置文件更新方法、装置、计算机设备和存储介质 | |
CN115576624A (zh) | 一种编程框架优化方法、系统、终端设备及存储介质 | |
CN112579705B (zh) | 元数据采集方法、装置、计算机设备和存储介质 | |
CN115203260A (zh) | 一种异常数据确定方法、装置、电子设备及存储介质 | |
CN109902067B (zh) | 文件处理方法、装置、存储介质及计算机设备 | |
CN112256731A (zh) | 数据展示方法、装置及电子设备 | |
CN109905475B (zh) | 一种基于sql以规定格式输出云计算监控数据的方法 | |
CN114268540B (zh) | 规则引擎的优化方法、装置及设备 | |
CN112486556B (zh) | 一种服务器兼容bmc的方法、系统、终端及存储介质 | |
CN108446113B (zh) | 类名称获取方法、装置及电子设备 | |
CN114741408A (zh) | 数据调度方法、系统、计算机设备及可读存储介质 | |
CN114840217A (zh) | 一种编译方法、装置、设备及可读存储介质 | |
CN114020508A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN118484232A (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 |