按计划运行作业或连续运行作业

可以使用“计划”触发器类型定期运行 Azure Databricks 作业,或者使用“连续”触发器类型来确保始终有一个作业处于实际运行状态。

可以使用计划,以便在指定的时间和时段自动运行 Azure Databricks 作业。 可以定义一个简单的计划来定期运行作业,也可以定义一个使用 cron 为定期计划定义特定时间的高级计划。 对于高级计划,还可以为计划选择时区。 可以随时暂停计划作业。

当你使用连续触发器运行作业时,Azure Databricks 作业确保该作业始终处于活动状态。 如果上一次运行成功完成或处于失败状态,或者当前没有作业实例运行,则会开始新的作业运行。

添加作业计划

计划触发器类型有两个选项:

  • 定义基本计划,根据指定的时间单位和时间间隔定期运行作业。 例如,安排一项作业从首次运行的时间开始每十二小时运行一次。
  • 定义高级计划,对运行作业的时间段、时间和时区进行更多控制。

若要定义作业的计划,请执行以下操作:

  1. 在边栏中,单击“工作流”。
  2. 在“作业”选项卡上的“名称”列中,单击作业名称。
  3. 在“作业详细信息”面板中,单击“添加触发器”
  4. 在“触发器类型”中,选择“计划”
  5. 在“计划类型”中,选择“简单”或“高级”
    1. 简单:指定运行作业的时间间隔和时间单位
    2. 高级:指定时间段、开始时间和时区。 (可选)选中“显示 Cron 语法”复选框以使用 Quartz Cron 语法显示和编辑计划。
  6. 单击“ 保存”。

还可以直接在笔记本 UI 中计划笔记本作业。

注意

  • Azure Databricks 强制实施在作业计划触发的后续运行之间的最小间隔(10 秒),而不考虑 cron 表达式中的秒配置。
  • 可以选择一个采用夏令时或 UTC 时间的时区。 如果选择一个采用夏令时的时区,则在夏令时开始或结束时,某个每小时作业可能会被系统跳过,或者会延迟一到两个小时。 若要每小时(绝对时间)运行作业,请选择“UTC”。
  • 作业计划程序不适用于低延迟作业。 由于网络或云问题,作业运行的延迟时间有时可能会长达数分钟。 在这些情况下,计划的作业会在服务可用后立即运行。

暂停和恢复作业计划

若要暂停作业,请在“作业详细信息”面板中单击“暂停”。

若要继续暂停的作业计划,请单击“继续”。

运行连续作业

  1. 在边栏中,单击“工作流”。
  2. 在“作业”选项卡上的“名称”列中,单击作业名称。
  3. 在“作业详细信息”面板中单击“添加触发器”,在“触发器类型”中选择“连续”,然后单击“保存”。

若要停止连续作业,请单击“立即运行”旁边的 “蓝色向下脱字号”,然后单击“停止”。

注意

  • 一项连续作业只能有一个运行实例。
  • 旧的运行结束和新的运行开始之间有一个小的延迟。 此延迟应小于 60 秒。
  • 不能对连续作业使用任务依赖项
  • 不能对连续作业使用重试策略。 相反,连续作业使用指数退避来管理作业运行失败。
  • 在暂停的连续作业上选择“立即运行”会触发新的作业运行。 如果作业处于非暂停状态,这样做会引发异常。
  • 要让连续作业选取新的作业配置,请取消现有运行,然后,新的运行会自动启动。 还可以单击“重启运行”以使用更新的配置重启作业运行。

如何处理连续作业的故障?

Azure Databricks 作业使用指数退避方案来管理具有多个连续失败的连续作业。 指数退避允许连续作业在不暂停的情况下运行,并在发生可恢复失败时返回到正常状态。

当连续作业超过允许的连续失败阈值时,以下描述了如何管理后续作业运行:

  1. 在系统设置的重试时间过后,将重新启动作业。
  2. 如果下一个作业运行失败,则重试时间会增加,并在新的重试时间后重新启动作业。
    1. 对于每个后续的作业运行失败,重试周期都会再次增加,最高可达系统设置的最大重试周期。 达到最大重试周期后,将继续使用最大重试周期重试作业。 连续作业的重试次数没有限制。
    2. 如果作业运行成功完成并开始新的运行,或者运行超过阈值而没有失败,则认为作业正常,并且回退序列将重置。

可以在作业 UI 中以指数退避状态重新启动连续作业,也可以将作业 ID 传递给 Jobs 2.1 API 中的 POST /api/2.1/jobs/run-now 请求或 Jobs 2.0 API 中的 POST /api/2.0/jobs/run-now 请求。