使用DataX Web的任务依赖

一、 作业调度

1.1 测试准备

首先,在clickhouse数据库中进行测试。现有表,如下所示:
在这里插入图片描述
​ 我们将使用表中stu_id字段中值为4、5、6、8这四条记录进行验证。

其次,在DataX Web中进行构建四个任务,接下来以“依赖任务5”为例,进行说明,构建过程见下图:

在这里插入图片描述
​ 在sql语句框中,键入如下语句:

SELECT * FROM TEST WHERE stu_id = '5';

​ 意为select出stu_id为5的记录,作为源数据库中的记录。
在这里插入图片描述
​ 接着,再次选择同一数据源,即源数据库和目的数据库为同一数据库。此时,对字段全选。
在这里插入图片描述
​ 最后,构建josn文件,点击“选择模板”后,即可完成一个任务的构建。
在这里插入图片描述
​ 依此法,便可得到四个任务,分别为任务依赖4、任务依赖5、任务依赖6、任务依赖8。见下图:
在这里插入图片描述

1.2 进行测试

1.2.1 测试一

​ 在测试一中,将以任务4为父任务,任务5为其子任务,后再以任务5为父任务,任务6为其子任务。示意图如下:
在这里插入图片描述
​ 首先,在任务4的任务配置页面选择任务5为其子任务:
在这里插入图片描述
​ 接着,在任务5的任务配置页面选择任务6为其子任务:
在这里插入图片描述
​ 然后,执行任务4,观察“日志管理界面”:
在这里插入图片描述
​ 由上图,可以发现,任务4执行结束的时间是任务5的开始调度的时间,任务5执行结束的时间是任务6的开始调度的时间。至此,测试一的作业调度可行。

1.2.2 测试二

​ 在测试二中,将以任务4为父任务,任务5、任务6为其子任务。示意图如下:
在这里插入图片描述
​ 首先,在任务4的任务配置页面选择任务5、任务6为其子任务:
在这里插入图片描述
​ 然后,执行任务4,观察“日志管理界面”:
在这里插入图片描述
​ 由上图,可以发现,任务4执行结束的时间是任务5、任务6的开始调度的时间。于是,我们可以知道,任务5、任务6的先后顺序不重要。因为任务5和任务6是并行的,任务4一结束就调动任务5、任务6的执行。

1.2.3 测试三

​ 在测试二中,将以任务4为父任务,任务5、任务8为其子任务后再以任务5为父任务,任务6为其子任务。示意图如下:
在这里插入图片描述
​ 首先,在任务4的任务配置页面选择任务5、任务8为其子任务:
在这里插入图片描述
​ 接着,在任务5的任务配置页面选择任务6为其子任务:
在这里插入图片描述
​ 然后,执行任务4,观察“日志管理界面”:
在这里插入图片描述
​ 由上图可以发现,任务4执行结束的时间是任务5、任务8的开始调度的时间。在任务5和任务8是并行的情况下,若任务5失败就不能再调动任务6的执行了(其中,任务5调度失败是刻意设置,为探究父任务失败后,子任务是否可以执行)。

1.2.4 小结

​ 综上,我们可以知道在datax web中,我们可以使用任务依赖来完成任务的作业调度,即一任务的开始是以另一任务的结束为起始“信号”。但是,从中我们也可以发现,若某以任务有多个子任务,那么它们将并行执行,且父任务失败后,子任务将不会执行。此外,这样也存在一个问题:即任务可以分岔,但是不能汇合。简单来说,以测试三举例进行说明,假设任务4为父任务,任务5、任务8为其子任务,后再以任务8为父任务,任务6为其子任务。当任务4执行结束时,将执行任务5、任务8,但是任务6的开始时间取决于任务8结束的时间,而不是取决于任务5、任务8中最晚一个任务结束的时间。这个额外测试的日志概要信息截图如下:
在这里插入图片描述
​ 由上图可以发现,任务4执行结束的时间是任务5、任务8的开始调度的时间。在任务5和任务8是并行的情况下,任务8执行结束的时间是任务6的开始调度的时间(其中,任务5调度失败是刻意设置,因为任务5、任务8的内容相近,所花费时间也相差不大。这样就难以说明任务6的开始执行时间是取决于任务8结束的时间,还是取决于任务5、任务8都结束的时间点)。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值