排查和修复作业失败问题

假设系统通知(例如通过电子邮件通知、监视解决方案或 Azure Databricks Jobs UI)某个任务在 Azure Databricks 作业运行中失败。 本文中的步骤将提供指导,以帮助你确定失败的原因、修复所发现问题的建议,以及如何修复失败的作业运行。

确定失败原因

若要在 Azure Databricks 作业 UI 中查找失败的任务,请执行以下操作:

  1. 单击边栏中的 Jobs Icon“作业”。

  2. 在“名称”列中单击作业名称。 “运行”选项卡显示活动运行和已完成的运行,包括任何失败的运行。 “运行”选项卡中的矩阵视图显示作业的运行历史记录,包括每个作业任务的成功和不成功运行。 任务运行不成功的原因可能是该任务失败,或者由于依赖的任务失败而被跳过。 使用矩阵视图可以快速识别作业运行的任务失败问题。

    Matrix view of job runs

  3. 将鼠标悬停在失败的任务上可查看关联的元数据。 这些元数据包括开始和结束日期、状态、持续时间、群集详细信息,在某些情况下还包含错误消息。

  4. 为了帮助确定失败原因,请单击失败的任务。 此时会出现“任务运行详细信息”页,其中显示了任务的输出、错误消息和关联的元数据。

修复失败原因

任务可能出于多种原因而失败,例如数据质量问题、配置错误或计算资源不足。 下面是修复一些常见任务失败原因的建议步骤:

  • 如果失败与任务配置相关,请单击“编辑任务”。 任务配置将在新选项卡中打开。根据需要更新任务配置,然后单击“保存任务”。
  • 如果问题与群集资源相关,例如实例不足,则有几个选项可用:
    • 如果作业配置为使用作业群集,请考虑使用共享的通用群集。
    • 更改群集配置。 单击“编辑任务”。 在“作业详细信息”面板中的“计算”下,单击“配置”以配置群集。 可以更改辅助角色数量、实例类型或其他群集配置选项。 还可以单击“交换”以切换到另一个可用群集。 为确保以最佳方式利用可用资源,请查看群集配置最佳做法。
    • 如有必要,请让管理员提高部署工作区的云帐户和区域中的资源配额。
  • 如果失败是由超过最大并发运行导致的,则执行以下任一操作:
    • 等待其他运行完成。
    • 单击“编辑任务”。 在“作业详细信息”面板中,单击“编辑并发运行”,为“最大并发运行数”输入新值,然后单击“确认”。

在某些情况下,失败可能是由作业的上游导致的,例如外部数据源不可用。 解决外部问题后,仍可以利用下一部分中介绍的修复运行功能。

重新运行失败的任务和已跳过的任务

确定失败原因后,可以通过仅运行一部分失败的任务和任何依赖任务来修复失败的或已取消的多任务作业。 由于成功的任务和依赖于它们的任何任务都不会重新运行,因此此功能减少了从未成功的作业运行中恢复所需的时间和资源。

可以在修复作业运行之前更改作业或任务设置。 使用当前作业和任务设置重新运行未成功的任务。 例如,如果更改了笔记本路径或群集设置,则将使用更新的笔记本或群集设置重新运行任务。

在“任务运行详细信息”页上查看所有任务运行的历史记录

注意

  • 如果一个或多个任务共享某个作业群集,则修复运行会创建新的作业群集。 例如,如果原始运行使用了作业群集 my_job_cluster,则第一个修复运行将使用新作业群集 my_job_cluster_v1,因此你可以轻松查看初始运行和任何修复运行使用的群集和群集设置。 my_job_cluster_v1 的设置与 my_job_cluster 的当前设置相同。
  • 只有协调两个或多个任务的作业才支持修复。
  • “运行”选项卡中显示的“持续时间”值包括第一次运行开始到最后一次修复运行完成的时间。 例如,如果一次运行失败了两次,并在第三次运行时成功,则持续时间包括所有三次运行的时间。

若要修复失败的作业运行,请执行以下操作:

  1. 在作业运行表的“开始时间”列中单击失败运行对应的链接,或者在矩阵视图中单击失败的运行。 此时将显示“作业运行详细信息”页。
  2. 单击“修复运行”。 此时将显示“修复作业运行”对话框,其中列出了所有未成功的任务以及将重新运行的任何相关任务。
  3. 若要为要修复的任务添加或编辑参数,请在“修复作业运行”对话框中输入参数。 在“修复作业运行”对话框中输入的参数将替代现有值。 在随后的修复运行中,可以通过清除“修复作业运行”对话框中的键和值来将参数恢复为其原始值。
  4. 在“修复作业运行”对话框中单击“修复运行”。
  5. 修复运行完成后,矩阵视图将会更新,包含已修复运行的新列。 任何以红色显示的失败任务现在应变为绿色,表示整个作业成功运行。

查看和管理连续作业失败情况

当连续作业的连续失败次数超过阈值时,Azure Databricks Jobs 会使用指数退避来重试作业。 当作业处于指数退避状态时,“作业详细信息”面板中会显示消息,其中包括:

  • 连续失败的次数。
  • 作业运行且未出错而被视为成功的时间段。
  • 在当前无运行处于活动状态的情况下,下一次重试之前的时间。

若要取消活动运行、重置重试期并启动新的作业运行,请单击“重启运行”。