上云无忧 > 文档中心 > 天翼云数据治理中心 DataArts Studio 数据开发使用教程 - 作业依赖详解
数据治理中心 DataArts Studio
天翼云数据治理中心 DataArts Studio 数据开发使用教程 - 作业依赖详解

文档简介:
本章节主要介绍DataArts Studio的作业依赖详解功能。 周期调度作业支持设置调度周期符合条件的作业为依赖作业。设置依赖作业的操作详情请参考《DataArts Studio用户指南》手册中的“数据开发 - 作业开发 -调度作业”章节。
*产品来源:中国电信天翼云。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

周期调度作业支持设置调度周期符合条件的作业为依赖作业。设置依赖作业的操作详情请参考《DataArts Studio用户指南》手册中的“数据开发 - 作业开发 -调度作业”章节。

例如周期调度作业A,可设置其依赖作业为作业B,如下图所示进行配置。则仅当其依赖的作业B在某段时间内所有实例运行完成、且不存在失败实例时,才开始执行作业A。

说明
  • 依赖的作业B的“某段时间”,计算方法如下,详见后文设置依赖作业后的作业运行原理。

  • 同周期依赖,如分钟依赖分钟、小时依赖小时或天依赖天时,“某段时间”为 (作业A执行时间-作业A周期时间, 作业A执行时间] 。

  • 跨周期依赖:如小时依赖分钟、天依赖分钟、天依赖小时或月依赖天时,“某段时间”为 [上一作业A调度周期的自然起点, 当前作业A调度周期的自然起点) 。

  • 作业A是否判断其依赖的作业B的实例状态,与“依赖的作业失败后,当前作业处理策略”参数有关,具体如下:·

  • “依赖的作业失败后,当前作业处理策略”参数配置为“挂起”或“终止执行”后,当其依赖的作业B在某段时间内存在运行失败实例,则作业A“挂起”或“终止执行”。

  • “依赖的作业失败后,当前作业处理策略”参数配置为“继续执行”,只要其依赖的作业B在某段时间内所有实例跑完(不判断其状态),则作业A就继续执行。

详见下图:作业依赖属性

本章节主要介绍设置依赖作业的条件,以及设置依赖作业后的作业运行原理。

设置依赖作业的条件

当前周期调度作业的调度周期包括分钟、小时、天、周、月这五种周期,周期调度作业A如果要配置依赖作业为周期调度作业B,则调度周期必须符合以下要求:

  • 作业A的调度周期不能比依赖作业B小。例如,作业A和作业B同为分钟/小时调度,A的间隔时间小于B的间隔时间,则作业A不能设置作业B为依赖作业;作业A为分钟调度,作业B为小时调度,则作业A不能设置作业B为依赖作业。
  • 作业A和依赖作业B的不能有任一调度周期为周。例如,作业A的调度周期为周或作业B的调度周期为周,则作业A不能设置作业B为依赖作业。
  • 调度周期为月的作业只能依赖调度周期为天的作业。例如,作业A的调度周期为月,则作业A只能设置调度周期为天的作业为依赖作业。

不同调度周期的作业,其允许配置的依赖作业调度周期总结如下图所示。

设置依赖作业后的作业运行原理

同周期依赖和跨周期依赖的作业运行原理有所差异。为方便说明,本例中假设“依赖的作业失败后,当前作业处理策略”参数设置为“继续执行”,作业A不判断作业B的实例运行状态;如果该参数设置为“挂起”或“终止执行”,则作业A还会额外判断作业B的实例中是否存在失败实例。

  • 同周期依赖 :即作业A与其依赖作业B为相同调度周期,如分钟依赖分钟、小时依赖小时或天依赖天。

同周期依赖的情况下,当作业A的依赖作业配置为作业B后,作业A会在 (作业A执行时间-作业A周期时间, 作业A执行时间] 时间区间内检查是否有作业B的实例运行,只有在此期间作业B的实例运行完成才会运行作业A。

示例1:作业A依赖作业B,均为分钟调度。作业A的开始时间10:00,周期时间20分钟;作业B的开始时间10:00,周期时间10分钟。则会出现如下情况:

同周期作业依赖情况

时间点 作业B(分钟调度,开始时间10:00,周期时间10分钟) 作业A(分钟调度,开始时间10:00,周期时间20分钟)
10:00 执行 检查 (09:40, 10:00] 区间,有作业B实例运行,待作业B执行完成后,执行作业A
10:10 执行 -
10:20 执行 检查(10:00, 10:20] 区间,有作业B实例运行,待作业B执行完成后,执行作业A
10:30 执行 -
... ... ...

示例2:作业A依赖作业B,均为天调度。作业A的开始时间为8月1日09:00;作业B的开始时间8月1日10:00。则会出现如下情况:

同周期作业依赖情况

时间点 作业B(天调度,开始时间为8月1日10:00) 作业A(天调度,开始时间8月1日09:00)
8月1日09:00 - 检查 (7月31日09:00, 8月1日09:00] 区间,无作业B实例运行,不执行作业A
8月1日10:00 执行 -
8月2日09:00 - 检查 (8月1日09:00, 8月2日09:00] 区间,有作业B实例运行,待作业B执行完成后,执行作业A
8月2日10:00 执行 -
... ... ...
  • 跨周期依赖 :即作业A与其依赖作业B为不同调度周期,如小时依赖分钟、天依赖分钟、天依赖小时或月依赖天。

跨周期依赖的情况下,当作业A的依赖作业配置为作业B后,作业A会在 [上一作业A调度周期的自然起点, 当前作业A调度周期的自然起点) 时间区间内检查是否有作业B的实例运行,只有在此期间作业B的实例运行完成才会运行作业A。

说明

调度周期的自然起点定义如下:

  • 调度周期为小时:上一调度周期的自然起点为上一小时的零分零秒,当前调度周期的自然起点为当前小时的零分零秒。

  • 调度周期为天:上一调度周期的自然起点为昨天的零点零分零秒,当前调度周期的自然起点为今天的零点零分零秒。

  • 调度周期为月:上一调度周期的自然起点为上个月1号的零点零分零秒,当前调度周期的自然起点为当月1号的零点零分零秒。

示例3:作业A依赖作业B,作业A为天调度,作业B为小时调度。作业A的每天02:00执行;作业B的开始时间00:00,间隔时间10小时。则会出现如下情况:

跨周期作业依赖情况

时间点 作业B(小时调度,开始时间00:00,间隔时间10小时) 作业A(天调度,每天02:00执行)
第1天00:00 执行 -
第1天02:00 - 检查 [第0天00:00:00, 第1天00:00:00) 区间,无作业B实例运行,不执行
第1天10:00 执行 -
第1天20:00 执行 -
第2天00:00 执行 -
第2天02:00 - 检查[第1天00:00:00, 第2天00:00:00) 区间,有作业B实例运行完成,执行作业A
第2天10:00 执行 -
第2天20:00 执行 -
... ... ...

示例4:作业A依赖作业B,作业A为月调度,作业B为天调度。作业A的每月1号、2号的02:00执行;作业B在8月1日00:00开始执行。则会出现如下情况:

跨周期作业依赖情况

时间点 作业B(天调度,8月1日00:00执行) 作业A(月调度,每月1号、2号的02:00执行)
8月1日00:00 执行 -
8月1日02:00 - 检查 [7月1日00:00:00, 8月1日00:00:00) 区间,无作业B实例运行,不执行
8月2日00:00 执行 -
8月2日02:00 - 检查[7月1日00:00:00, 8月1日00:00:00) 区间,无作业B实例运行,不执行
... - ...
9月1日00:00 执行 -
9月1日02:00 - 检查[8月1日00:00:00, 9月1日00:00:00) 区间,有作业B实例运行完成,执行作业A
9月2日00:00 执行 -
9月2日02:00 - 检查[8月1日00:00:00, 9月1日00:00:00) 区间,有作业B实例运行完成,执行作业A
... ... ...
相似文档
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部