控制 Databricks 作业中的任务流
某些作业只是需要完成的任务列表。 可以通过指定任务之间的依赖关系来控制任务的执行顺序。 可以将任务配置为按顺序或并行运行。
但是,还可以创建包含条件任务、错误更正或清理的分支流。 Azure Databricks 提供用于控制作业中任务流的功能。 以下主题介绍了可以控制任务流的方法。
重试
重试指定当任务失败并显示错误消息时,应重新运行特定任务的次数。 错误通常是暂时性的,可通过重启来解决。 Azure Databricks 上的一些功能(如结构化流式处理中的架构演变)假设你通过重试来运行作业,以重置环境并使工作流能够继续进行。
如果为任务指定重试,则任务在遇到错误时最多会重启指定的次数。 并非所有作业配置都支持任务重试。 请参阅 设置重试策略。
在连续触发器模式下运行时,Databricks 会按指数退避自动重试。 请参阅 如何为连续作业处理故障?。
如果是条件任务,则运行
你可以使用“Run if”任务类型基于其他任务的结果为后续任务指定条件。 将任务添加到作业并指定依赖于上游的任务。 根据这些任务的状态,可以配置一个或多个要运行的下游任务。 作业支持以下依赖项:
- 全部成功
- 至少有一个成功了
- 没有一个失败
- 全部完成
- 至少一个失败
- 全都失败了
请参阅 配置任务依赖项
If/else 条件任务
可以使用 If/else 任务类型根据某些值指定条件。 请参阅 ,通过 If/else 任务为作业添加分支逻辑。
作业支持在逻辑中定义的 taskValues
,并允许将某些计算或状态的结果从任务返回到作业环境。 可以定义针对 taskValues
、作业参数或动态值的 If/else 条件。
Azure Databricks 支持以下条件操作数:
==
!=
>
>=
<
<=
另请参阅:
对于每个任务
使用 For each
任务在循环中运行另一个任务,将一组不同的参数传递给任务的每个迭代。
若要向作业添加 For each
任务,必须定义 For each
任务和 嵌套任务。 嵌套任务是针对 For each
任务的每个迭代运行的任务,是标准 Databricks 任务类型之一。 支持使用多种方法将参数传递给嵌套任务。