整体说明


开发模式下,任务支持进行“调度设置”,入口在任务开发模式画布顶部。

调度设置 - 图1

在调度设置弹框中,支持配置如下4大类配置:调度方式、时间设置、依赖设置、执行设置

调度方式


支持配置“调度开启”开关,设置为关,则任务无需配置调度信息;设置为开,则可进行时间设置、依赖设置、执行设置。

“调度开启”开关为关,后续提交上线后,线上任务会变为未调度的状态,且在线上不可被其它任务依赖。

时间设置


调度设置支持设置调度周期首次执行时间。如果需要更多时间格式,可选择corntab设置

调度设置 - 图2

基本信息 说明
调度设置类型 支持常规设置crontab设置
调度周期 支持根据小时分钟以及星期的调度
调度日历 支持根据日历进行调度,调度的日历模板支持用户自定义,系统预置沪深交易日模板
调度生效时间 调度任务的起始时间,后续的周期性任务调度将在这个时间基础上基于调度周期的配置进行
调度失效时间 支持在未来某个时间之后,任务新的实例不再生成。在调度失效之后,如果存在下游,则任务的实例会阻塞。默认为不设置,即永久执行

生效小时&生效分钟

在设置“调度周期”时,支持2种特殊场景的设置,一种是调度周期为1小时时,支持指定仅在一天中特定的小时执行,另一种是调度周期为1-60分钟时,支持指定仅在特定的时间范围和分钟时执行。

生效小时:调度周期为1小时,支持指定生效的小时,用‘,’表示多个小时的值、用‘-’表示小时范围。比如输入:0-8,10,15-20,调度生效时间设置:2024-01-01 12:30,则这个时间之后的0-8点,10点,15-20点,每个小时的30分执行,其中第一个计划执行时间为2024-01-01 15:30。

调度设置 - 图3

生效分钟:调度周期为1-60分钟,支持指定生效的分钟时间范围,用‘,’表示多个范围、用‘-’表示开始和结束时间。比如输入:08:00,15:00-16:00,调度生效时间设置:2024-01-01 08:00,调度周期为30分钟,则08:00、15:00、15:30、16:00这4个时刻,任务会执行。

调度设置 - 图4

调度日历

调度日历支持用户通过日历的方式进行调度日的配置,当前系统预置了金融券商领域的部分日历名称,用户可根据实际情况开启。开启后需要手动设置具体的调度日。

调度日历功能使用步骤如下:

  1. 调度日历功能默认不开启,如果需要使用,需要平台管理员,在平台管理基础配置页面开启调度日历

  2. 开启调度日历后,需要进行调度日的设置,单击配置日历

  3. 配置日历页面,选择下载模板,根据模板设置调度日和非调度日,完成后将配置内容上传至平台,调度日历配置完成;

  4. 调度设置中,单击调度日历下拉框,在下拉菜单中选中已配置完成的调度日历。

依赖设置


依赖设置支持对当前任务或节点配置上游依赖,可通过任务依赖,确保当前任务调度时,使用的数据已被上游任务产出。该区块的可配置项说明如下:

基本信息 说明
跨周期自依赖 默认关闭,启用后表示当前任务执行必须依赖此任务的上一周期实例。
任务依赖 支持配置当前任务对其它任务的依赖,支持任务依赖、节点依赖2种方式。任务依赖中,可配置当前任务对上游任务中非禁用的节点依赖;节点依赖中,可配置当前任务的节点对上游任务中非禁用节点的依赖。这2种方式均支持手动配置依赖和智能推荐依赖(详情见后文说明)。
跨流offset 任务配置上游任务依赖后,如果需要依赖的不是上游最近一次运行的实例,则可以通过配置offset值,来实现依赖上游的上上次,或更早之前的依赖(详情见后文说明)。
同周期依赖 当前任务配置的调度设置类型为常规设置,可现实该配置项,具体功能详情见后文说明。

智能推荐

如下图,为配置依赖的页面。可点击任务依赖和节点依赖中的“智能推荐”,更快捷地完成推荐。目前可以对支持“自定义血缘”的节点进行依赖推荐。

调度设置 - 图5

智能推荐时,输入表来源包括节点解析和配置的自定义血缘中的输入表。

产出来源节点推荐时,优先推荐开发模式配置了输出表的任务,其次是开发模式执行、线上调度、线上重跑、补数据、补数据重跑的任务。

调度设置 - 图6

调度设置 - 图7

除了智能推荐依赖,页面也支持用户手动配置添加依赖。

调度设置 - 图8

配置完成后,会显示依赖的信息。

调度设置 - 图9

节点依赖的智能推荐,可推荐所有节点的输入表的产出任务。推荐的任务来源和任务依赖的智能推荐的一致。

调度设置 - 图10

跨流offset

两个具有依赖关系的多节点任务A和B,B依赖于A。根据当前时间点B的计划运行实例的启动时间点,向前推n个A周期的计划运行实例,则B依赖于A的这个特定运行实例批次,n即为offset设定值。offset最小值为0,最大值为A已执行的周期数。
如下图所示,A的调度周期为2小时,开始执行的时间为1日的00:00;B的调度周期为1天,开始执行时间为2日的01:30。当offset=0时,B依赖于A的2日00:00任务实例;当offset=1时B依赖于A的1日22:00任务实例。
调度设置 - 图11

同周期依赖

当前任务设置调度时,需要设置调度时间。任务存在上下游依赖关系时,系统默认会按照下游实例的计划执行时间,查找上游实例中,早于该执行时间的最近一个执行的实例。

比如,上游A任务计划每天4点执行, 下游B任务计划每天3点执行, 则B任务每天3点的实例默认会依赖A任务前一天4点的实例。如果希望B任务当天的实例依赖A任务当天的实例,且不管A任务和B任务的计划执行如何调整,都会有当天实例强依赖的效果,则需要使用“同周期依赖”。

调度设置 - 图12

可设置条件和生效规则,可在任务调度设置的“同周期依赖”项右侧的“查看说明”中查看(参考上图):

1)仅当前任务的调度设置类型为“常规设置”时,才可设置本项,其中“按上游周期生效”、“按小周期生效”选项,都表示同周期依赖开启,但是按照不同的规则生效;

2)按上游周期生效:针对上下游不同周期时,按照被依赖上游任务的周期单位进行同周期判断。设置为该项,则比如下游是1小时调度周期,上游是1天调度周期,则当天1小时调度的所有实例均依赖1天调度当天的那个实例;比如下游是1天调度周期,上游是1月调度周期,则当月1天调度的所有实例均依赖1月调度当月的那个实例;

更多场景可参加下方表格:

调度设置 - 图13

3)按小周期生效:针对上下游不同周期时,按照当前任务和被依赖上游任务中周期较小者进行同周期判断。设置为该项,则比如下游是3小时调度周期,每小时的05分调度(假设00:05为首次),上游是1天调度周期,每天的03:10调度,此时同周期按照同1个小时判断,3小时调度的实例中,当天00:05的依赖1天调度前一天的03:10实例,当天03:05及之后的实例均依赖1天调度当天03:10实例。再比如下游是1天调度周期,每天03:05调度,上游是1月调度周期,每月3号03:10调度,此时同周期按照同1天判断依赖,1天调度的实例中,当月1号03:05、2号03:05均依赖1月调度前一天的03:10实例,当月3号03:05及之后的实例均依赖1月调度当月3号03:10实例;

更多场景可参加下方表格:

调度设置 - 图14

4)不生效:表示不开启同周期依赖,按照下游实例寻找上游最近一个实例的默认依赖;

执行设置


执行设置的参数中,可配置不同的任务执行策略,页面截图如下:

调度设置 - 图15

具体各项配置说明如下:

参数信息 说明
Spark计算资源 任务中存在Spark执行的节点,比如SQL节点选择了Spark引擎,或者包含了Spark节点,则支持配置此项。用于设置任务运行时,节点是采用节点的Spark计算资源配置,还是统一使用任务粒度配置的资源。
队列 执行任务的yarn队列,对于线上模式使用项目账号执行的客户,如果离线开发配置中配置了队列权限为“线上执行账号”,则用户可以选择所有线上的队列,如果配置了队列权限为“任务负责人”,则用户仅能选择任务负责人有权限的队列。对于线上模式使用个人账号的客户,则仅能选择任务负责人有权限的队列。
高优先级 针对Yarn的调度为Fair Scheduler调度的任务,开启高优先级,任务在执行中会抢占更多资源。
失败设置 任务失败后的处理策略:
1. 继续完成其他分支节点:忽略失败节点,继续完成不依赖失败节点的节点;
2. 停止所有节点:立即停止所有执行的节点,包括正在执行的节点;
3. 仅完成执行中的节点,继续完成正在执行的节点,结束后不再启动新节点。
节点自动重跑 支持开启自动重试并设置重试间隔和次数。
智能跳过 1.支持对满足触发条件的实例设置智能跳过,跳过的实例将打上“智能跳过”的标记;
2.智能跳过具有传递性,当前的实例跳过时,如果下游添加的是任务依赖节点, 则下游的实例将跳过运行;如果下游添加的是节点依赖节点,则下游依赖的节点将跳过运行;
3.目前支持“延迟时长”到达下次执行时间,或超过某个时长时,实例自动跳过;也支持上游任务依赖任一执行失败或全部执行失败时,实例自动跳过的配置。
并发设置 1.如果有相同的任务执行是,选择忽略本次操作会忽略本次执行;
2. 选择并行执行,则会和执行中的作业并行执行。
原始优先级 1.任务优先级包括原始优先级和最终优先级。原始优先级用L1~L4表示(L1为最低优先级),设置后会固定不变;
2.最终优先级基于原始优先级,根据任务依赖从下游向上游传递,定时动态更新到任务上;
3.针对CS调度的Yarn集群,SQL节点、Spark节点和MR节点,在线上调度时,支持将任务的优先级传递给Yarn队列来执行,高优先级任务优先获取Yarn资源。
4.其中Spark引擎需要3.0以上。
自定义参数 支持设置任务粒度的参数,优先级低于节点内设置的参数,高于引用的任务组的参数。