控制 Lakeflow 作业中的任务流动

某些作业只是需要完成的任务列表。 可以通过指定任务之间的依赖关系来控制任务的执行顺序。 可以将任务配置为按顺序或并行运行。

但是,还可以创建包含条件任务、错误更正或清理的分支流。 Lakeflow Jobs 提供功能以控制作业中的任务流。 以下主题介绍了可以控制任务流的方法。

重试

重试指定当任务失败并显示错误消息时,应重新运行特定任务的次数。 错误通常是暂时性的,可通过重启来解决。 Azure Databricks 上的一些功能(如结构化流式处理中的架构演变)假设你通过重试来运行作业,以重置环境并使工作流能够继续进行。

如果为任务指定重试,则任务在遇到错误时最多会重启指定的次数。 并非所有作业配置都支持任务重试。 请参阅 设置重试策略

在连续触发器模式下运行时,Databricks 会按指数退避自动重试。 请参阅 如何为连续作业处理故障?

如果是条件任务,则运行

你可以使用“Run if”任务类型基于其他任务的结果为后续任务指定条件。 将任务添加到作业并指定依赖于上游的任务。 根据这些任务的状态,可以配置一个或多个要运行的下游任务。 作业支持以下依赖项:

  • 全部成功
  • 至少有一个成功了
  • 没有一个失败
  • 全部完成
  • 至少一个失败
  • 全都失败了

请参阅 配置任务依赖项

If/else 条件任务

可以使用 If/else 任务类型根据某些值指定条件。 请参阅 ,通过 If/else 任务为作业添加分支逻辑。

Lakeflow 作业支持您在逻辑中定义的taskValues,并允许您将某个计算或状态的结果从任务返回至作业环境。 可以定义针对 、作业参数或动态值的 If/else 条件。taskValues

Lakeflow 作业支持以下条件表达式的操作数:

  • ==
  • !=
  • >
  • >=
  • <
  • <=

另请参阅:

对于每个任务

使用 For each 任务在循环中运行另一个任务,将一组不同的参数传递给任务的每个迭代。

若要向作业添加 For each 任务,必须定义 For each 任务和 嵌套任务。 嵌套任务是针对 For each 任务的每个迭代运行的任务,是标准 Databricks 任务类型之一。 支持使用多种方法将参数传递给嵌套任务。

请参阅 使用 For each 任务来循环运行另一任务

已禁用的任务

禁用任务以在运行时跳过它,而无需将其从作业中删除。 该任务保留其配置和运行历史记录,Lakeflow 作业会根据其 Run if 条件评估下游任务,以确定它们是否也运行。

请参阅 Lakeflow Jobs中的禁用任务