配置任务依赖项
你可以通过“Run if 依赖项”字段根据其他任务的成功、失败或完成,将控制流逻辑添加到任务。
依赖项在作业 DAG 中以可视方式表示为任务之间的行。
Azure Databricks 在运行下游任务之前运行上游任务,并且会并行运行尽可能多的这些任务。
注意
“依赖于”仅在作业包含多个任务时可见。
Databricks 还具有以下控制流和条件化功能:
- If/else 条件 任务用于基于布尔表达式的结果运行作业 DAG 的一部分。
If/else condition
任务允许向作业添加分支逻辑。 例如,仅当上游引入任务添加新数据时运行转换任务。 请参阅使用 If/else 任务向作业添加分支逻辑。 - “对于每个”条件任务根据输入数组将循环逻辑添加到另一个任务。 可以手动指定或动态生成输入数组。 请参阅在循环中运行参数化 Azure Databricks 作业任务。
- “运行作业”任务允许你在工作区中触发另一个作业。 请参阅作业的“运行作业”任务。
将 Run if 条件添加到任务
如果你在创建新任务时在 DAG 中选择了任务,则默认情况下,新任务对此任务配置了依赖项。
要编辑或添加条件,请执行下列操作:
- 选择任务。
- 在“依赖于”字段中,单击 X 以删除任务或从下拉菜单中选择要添加的任务。
- 在“Run if 依赖项”字段中选择其中一个条件选项。
- 单击“保存任务”。
Run if
条件选项
可以将以下Run if
条件添加到任务:
- 全部成功:所有依赖项都已运行并成功。 这是默认设置。 如果未满足条件,任务会标记为
Upstream failed
。 - 至少一个成功:至少有一个依赖项成功。 如果未满足条件,任务会标记为
Upstream failed
。 - 无失败:没有依赖项失败,并且至少运行了一个依赖项。 如果未满足条件,任务会标记为
Upstream failed
。 - 全部完成:任务在运行所有依赖项后运行,而不考虑依赖运行的状态。 此条件允许定义运行的任务,而不取决于其依赖任务的结果。
- 至少一个失败:至少有一个依赖项失败。 如果未满足条件,任务会标记为
Excluded
。 - 全部失败:所有依赖项都失败。 如果未满足条件,任务会标记为
Excluded
。
注意
- 如果配置为处理故障的任务不满足
Run if
条件,则会标记为Excluded
。 排除的任务会跳过,并被视为成功。 - 如果排除所有任务依赖项,也会排除该任务,不考虑其
Run if
条件。 - 如果取消任务运行,取消会传播到下游任务,并将运行具有处理故障的
Run if
条件的任务,例如在取消任务运行后验证清理任务运行。
具有任务依赖项的示例作业
配置任务依赖关系会创建任务执行的有向无环图 (DAG)。DAG 是在作业计划程序中表示执行顺序的常用方式。 以下面包括四个任务的作业为例:
- 任务 1 是根任务,不依赖于任何其他任务。
- 任务 2 和任务 3 依赖于任务 1 首先完成。
- 最后,任务 4 依赖于任务 2 和任务 3 成功完成。
以下示意图演示了这些任务的处理顺序: