Notebook作业调度场景下,手工调度和执行调度(单次运行)是不是一样的效果?
手工调度和执行调度(单次运行)效果不完全一样。
两种调度方式虽然最终都会执行一次作业,但在调度类型标记、依赖处理、并发控制、参数来源、运行身份、告警通知等方面存在明显差异。两种调度方式对比如表1。
- 手工调度:面向开发者的快速验证手段。其特点是忽略依赖、使用草稿参数和个人身份、不打扰任何人。代价是不能并发调试、产出不可被依赖、不进入生产资源环境。
- 执行调度:面向生产的执行方式。其特点是遵守依赖和互斥、使用已发布版本和生产身份、状态全链路可观测。代价是需要等待前置条件满足、产出对运维可见。
| 对比维度 | 手工调度(测试运行) | 执行调度(单次运行) |
|---|---|---|
| 使用场景 | 开发调试阶段,用于快速验证作业逻辑是否正确,无需等待调度计划时间。 | 作业配置完成后,需要立即执行一次(不修改周期调度配置),或通过API触发的单次运行。 |
| 操作入口 | 在作业开发页面单击“手工调度”按钮。 | 在作业开发页面单击“执行调度”按钮。 |
| 调度类型标记 | 实例监控中标记为“手工调度”类型。 | 实例监控中标记为“正常调度”。 |
| 前置依赖处理 | 忽略所有上游依赖,直接开始执行,无需等待父作业完成。 | 正常检查上游依赖,需等待所有父作业实例成功完成后才能执行。 |
| 并发控制 | 不支持并发:同一作业若已有手工调度实例在运行,不允许再次发起手工调度。 | 允许同一作业提交多次。受任务互斥配置约束(若配置了互斥则等待)。 |
| 参数来源 | 使用测试运行时手动填写的参数(手动输入的变量值)。 | 使用作业配置中定义的调度参数(SQL变量、脚本变量、常量、赋值算子传参等)。 |
| 作业版本 | 始终使用当前编辑中的最新版本,包括未提交的修改。 | 使用已提交(发布)的作业版本,不包含未提交的内容。 |
| 资源环境(企业模式) | 开发态:使用开发环境配置的队列、数据库等资源,不做生产环境映射 。 | 生产态:通过资源映射使用生产环境队列和数据库配置。 |
| 运行身份 | 以操作者本人的IAM身份执行。 | 以作业责任人或工作空间委托身份执行。 |
| 告警通知 | 取消或失败时不发送告警通知(视为调试行为,不打扰责任人)。 | 取消或失败时发送告警通知给作业责任人及相关订阅者。 |
| 实例状态推送 | 不推送实例状态变更事件(启动、完成、失败等状态不对外广播)。 | 正常推送实例状态变更事件,运维监控可实时感知。 |
| 历史数据清理 | 手工调度产生的等待队列数据不参与自动老化清理。 | 周期调度的等待队列数据按配置天数自动老化清理。 |
| 可否被其他作业依赖 | 不能作为其他作业的依赖上游(调试性质,不产生可信产出)。 | 可作为其他作业的依赖上游,但“单次执行”类型作业不能被依赖 |
| 适用阶段 | 开发联调阶段。 | 生产验证、临时补数、一次性任务执行。 |