DataWorks天任务依赖小时任务的配置与运行机制
在DataWorks中,天任务(日调度任务)依赖小时任务(小时调度任务)时,其依赖关系和运行机制会根据小时任务是否设置自依赖以及具体的业务需求有所不同。以下是详细的配置与运行说明:
1. 默认场景:天任务依赖小时任务当天所有实例
-
依赖关系:
- 天任务默认依赖小时任务当天生成的所有周期实例。
- 即,天任务会等待小时任务当天所有周期实例执行完成后,才会开始运行。
-
运行机制:
- 假设小时任务每天从0点开始,每小时调度一次,共生成24个实例。
- 天任务需要等待这24个小时任务实例全部运行成功后,才会启动执行。
-
运维中心查看依赖关系:
- 在运维中心,天任务右键查看父节点时,会显示依赖小时任务当天所有实例(例如24个实例)。
- 依赖线为实线,表示同周期依赖。
2. 特殊场景:天任务依赖小时任务当天具体某个实例
-
实现方式:
- 小时任务配置:小时任务需设置自依赖,即在调度配置中选择“依赖上一周期 > 本节点”。
- 天任务配置:天任务的定时时间需与目标小时实例的定时时间保持一致。
-
运行机制:
- 假设天任务需要依赖小时任务当天12:00的实例:
- 小时任务设置了自依赖,因此每个小时实例依赖前一个实例。
- 天任务的定时时间为12:00,仅依赖小时任务当天12:00的实例。
-
运维中心查看依赖关系:
- 天任务右键查看父节点时,会显示依赖小时任务当天12:00的实例(依赖线为实线)。
- 小时任务右键查看父节点时,会显示12:00的实例依赖11:00的实例(依赖线为虚线,表示跨周期依赖)。
3. 跨周期依赖:天任务依赖小时任务昨天所有实例
-
实现方式:
- 天任务配置:在调度配置中选择“依赖上一周期 > 自定义”,并填写小时任务的节点ID。
- 小时任务配置:无需额外配置。
-
运行机制:
- 天任务会依赖小时任务昨天生成的所有实例。
- 假设小时任务每天生成24个实例,则天任务会等待昨天的24个实例全部运行成功后,才会启动执行。
-
注意事项:
- 如果天任务同时存在同周期依赖(即依赖小时任务当天所有实例),则需要手动去掉同周期依赖,否则天任务会同时依赖小时任务当天和昨天的所有实例。
-
运维中心查看依赖关系:
- 天任务右键查看父节点时,会显示依赖小时任务昨天所有实例(依赖线为虚线,表示跨周期依赖)。
4. 自依赖对小时任务及下游天任务的影响
-
对小时任务的影响:
- 小时任务设置自依赖后,当前周期实例的运行依赖于上一周期实例的成功完成。
- 例如,假设小时任务每小时调度一次,1:00的实例需要等待0:00的实例运行成功后才会执行。
-
对天任务的影响:
- 如果小时任务设置了自依赖,天任务将按照“就近原则”挂载依赖,即依赖距离自己定时时间最近的某个小时实例,而非依赖当天所有小时实例。
5. 配置依赖的确认与验证
为了确保依赖关系配置正确,可以通过以下方式进行确认: - 配置时预览依赖: - 在调度配置界面,使用“预览依赖”功能提前检查依赖关系是否符合预期。 - 提交时代码解析结果对比: - 提交节点时,系统会提示依赖变更情况,需二次确认变更对生产环境的影响。 - 发布后查看周期任务: - 在运维中心的周期任务界面,展开任务上下游,查看生产环境中的实际依赖关系。
6. 注意事项与限制
-
重要提醒:
- 自依赖的任务在补数据时,会出现数据实例按时间依次运行的现象,需注意补数据的时间范围和顺序。
- 如果天任务需要跨周期依赖小时任务,请务必检查是否已去掉同周期依赖,避免天任务同时依赖当天和昨天的实例。
-
不支持的场景:
- DataWorks无法直接监控非周期性调度产出的数据表(如实时同步、本地上传等)。对于此类场景,需通过自定义依赖关系进行配置。
通过以上配置与运行机制,您可以根据业务需求灵活设置天任务对小时任务的依赖关系,确保任务调度的准确性和高效性。