诊断 Lakeflow 作业性能

当作业或任务花费的时间超过预期时,请使用作业 UI 来了解花费的时间以及可以执行的操作来减少它。 本页介绍无服务器作业的运行明细、流式处理任务指标和查询性能指标。 若要查找并打开作业运行记录,请参阅 监视 Lakeflow 作业

按阶段查看运行明细

运行明细显示作业或任务运行花费时间的位置。 查看作业运行详细信息时,将鼠标悬停在运行的 持续时间 上,以查看总持续时间细分为以下阶段:

  • 已排队
  • 正在等待资源
  • 库安装
  • 正在运行

某次作业运行的明细。

运行细分可用于作业运行和任务运行。 对于包含多个任务的作业,作业级细分只将等待资源计入到第一个任务开始运行之前。 有关每个任务的完整细分,请查看任务运行输出中的运行明细。

使用细分来确定哪个阶段花费的时间最多,然后使用以下部分来了解可能的原因以及可以执行的操作来减少该时间。

注释

管道 任务具有与大多数任务不同的阶段。 它们是:创建、等待资源、初始化、设置表和运行。 如需了解如何缩短过长的初始化时间和表设置时间,请参阅 解决管道中初始化时间过长的问题

排队阶段

由于并发限制,作业或任务正在等待开始。

可能的原因:

  • 该作业达到其最大并发运行限制,因为同一作业以前的运行仍在进行中。
  • 同时运行的其他作业已达到工作区级并发运行限制。

可以执行的操作:

等待资源阶段

您的作业或任务正在等待计算资源变为可用,然后才能开始运行。 为了减少等待时间,可以执行的操作取决于计算类型。

计算类型 可能的原因 你能做什么
Serverless 无服务器作业使用标准性能模式,其启动延迟为 4 到 6 分钟,具体取决于计算可用性以及是否使用 Spark。 切换到 性能优化模式 以减少启动时间。
经典
  • VM 启动时间缓慢。
  • 超出配额或容量不足延迟群集启动。
  • 若要在不管理群集或计算配置的情况下优化启动时间,请考虑 将作业迁移到无服务器
  • 如果遇到 VM 启动时间缓慢的问题,请配置具有空闲实例自动终止的 实例池 ,以跨越计划作业之间的差距。 另请参阅 池最佳做法
  • 将连续作业分组为单个 多任务作业中的任务。 作业中的任务在运行期间共享同一群集,从而避免了重复的群集启动。 与连续的作业运行或第三方业务流程协调程序相比,这可以提供显著的加速,而后者不能在作业任务之间重复使用群集。
  • 若要处理配额和容量问题,请启用灵活的节点类型,以便在首选类型不可用时,Azure Databricks自动回退到兼容的实例类型。 如果一直达到配额限制,还可以请求云提供商增加配额。

库安装阶段

作业在开始运行库之前花费时间安装库。

计算类型 可能的原因 你能做什么
Serverless
  • Azure Databricks尚未缓存环境,必须创建它。
  • 该作业会安装许多包。
  • 自定义 PyPI 存储库的响应速度可能很慢,尤其是在许多任务并行安装包时。
  • 减少所需的包数。
  • 请考虑使用工作区基础环境。
经典 库安装时间很高,因为群集上定义的环境的大小和复杂性,尤其是在使用 init 脚本在群集启动时安装库时。 验证该作业是否仅使用此次运行所需的软件包。

运行阶段

由于多种原因,运行时间可能比预期长。 以下列表并不详尽,但它涵盖了一些常见原因和可能的操作。

可能的原因:

  • 数据量增加,因此可能需要更长的运行时。
  • 作业或计算配置已更改。
  • 代码更改引入了较慢的查询或低效的操作。

可以执行的操作:

  • 使用Azure Databricks系统表(例如作业系统表计算系统表)查看最近的更改。
  • 对于无服务器作业,请使用查询历史记录来查找查询花费的时间最长,并打开其 查询配置文件 来识别优化机会。 若要查找相关查询,请使用每个任务的 “计算 ”部分中的链接,或打开与查询配置文件集成的作业 时间线视图
  • 对于在经典计算上运行的作业,请使用 Spark UI 诊断慢速阶段和任务。

对于无服务器作业,可以获取其他 任务指标 (公共预览版)和 查询性能指标 (beta)。

查看流媒体任务的指标

Important

Lakeflow 作业的流数据监控正处于公共预览阶段。

Lakeflow 作业 UI 在 作业运行详细信息 页面上为流式工作负载提供可观测性指标。 这些指标包括由 Spark Structured Streaming 支持的源的积压秒数、积压字节数、积压记录数和积压文件数,这些源包括 Apache Kafka、Amazon Kinesis、Auto Loader 和 Delta 表。 查看任务的运行详细信息时,指标在右侧窗格中显示为图表。 每个图表显示过去最多 48 小时内按分钟聚合的最大值。

每个流媒体源仅支持特定指标。 界面仅显示流式源支持的指标。 下表显示了可用于所支持的流媒体源的度量标准:

积压字节 积压记录 积压工作秒数 积压工作文件
Kafka
动动力
Delta
自动加载器

还可以为每个流式处理指标指定阈值,并在任务运行期间流超过阈值时配置通知。 请参阅为慢速作业配置通知

若要查看从其中一个受支持的结构化流式处理源流式传输数据的任务运行的流式处理指标,请执行以下操作:

  1. 在“作业运行详细信息”页上,单击要查看其指标的任务
  2. 单击“任务运行”窗格中的“指标”选项卡。
  3. 若要打开指标的图形,请单击指标名称旁边的 右尖括号
  4. 若要查看特定流的指标,请在“按 stream_id 筛选”文本框中输入流 ID。 可以在作业运行的输出中找到流 ID。
  5. 若要更改指标图的时间段,请使用时间下拉菜单。
  6. 如果该运行包含十多个流,要浏览这些流,请单击“下一步”或“上一个”。

流式处理可观测性限制

  • Azure Databricks 每分钟更新一次指标,除非某次运行具有四个以上的流。 如果运行有四个以上的流,Azure Databricks每五分钟更新一次指标。
  • Azure Databricks只为每个运行中的前 50 个流收集指标。
  • Azure Databricks每隔一秒收集指标。 如果 triggerInterval 设置小于 1 秒,则指标可能不可见。
  • 默认情况下,大多数数据源收集流式处理指标。 但是,对于其他人,必须启用此功能。 如果数据源未收集流式处理指标,请将 spark.sql.streaming.metricsEnabled 标志设置为 True

查看无服务器作业的查询性能指标

Important

此功能在 Beta 版中。 工作区管理员可以从 预览 页控制对此功能的访问。 请参阅 Manage Azure Databricks 预览版

运行无服务器作业时,Azure Databricks作业运行 UI 中直接显示所选的查询配置文件指标,这样就可以识别性能问题,而无需为每个查询打开单独的查询配置文件。 使用这些指标调查运行速度缓慢的原因,或比较两个运行之间的性能。

在查看这些指标之前:

  • 必须为工作区启用 改进的 Lakeflow 性能可观测性 预览版。 工作区管理员可以从 “预览”页启用它。
  • 您的工作区必须能够访问查询性能分析。 如果没有它,灯泡指示器将不会显示,不过聚合指标(读取的行数、写入的行数和查询总数)仍会显示。

Azure Databricks 显示以下指标,这些指标是根据某次无服务器作业运行中的查询汇总得出的:

  • 每次任务运行的读取行数写入行数
  • 每个任务运行的查询总数
  • 当该任务中的一个或多个查询具有性能见解时,任务上会显示性能见解指示器(灯泡)。

这些指标会根据你查看此次运行的方式,显示在不同位置:

显示位置 你看到的内容
任务运行侧边栏 读取和写入的行数、查询总数,以及任务运行的洞察指示器。
DAG 视图 当任务的任一查询包含性能洞察时,任务节点上会显示灯泡徽章。
时间线视图 任务名称旁边有一个灯泡图标,显示该任务下各查询中的洞见总数;此外,在任务中每个含有洞见的查询旁也会显示一个灯泡图标。
“列表”视图 当该任务的任一查询有性能分析时,见解列中会显示一个灯泡。 如果未看到此列,请从列选取器中添加它。

注释

时间线视图现在可用于作为此 Beta 版的一部分的单任务作业。 以前,只有多任务作业具有时间线视图。

单击和悬停行为:

  • 时间线视图中,将鼠标悬停在任务上方以查看其聚合指标和任务查询的任何性能见解。
  • DAG 视图列表视图中,单击任务上的灯泡以打开 日程表视图 ,并展开该任务的查询。
  • 时间线视图 中,单击带有灯泡图标的查询的 查询文本,即可打开一个窗格,查看该查询的性能见解概览。

若要调查无服务器作业运行速度低于预期的原因:

  1. 打开作业运行记录。
  2. 切换到 时间线视图
  3. 根据持续时间分布确定花费的时间超过预期的任务。
  4. 将鼠标悬停在长时间运行的任务上以查看:
    • 读取的行数写入的行数:检查任务是否处理了比平时更多的数据。
    • 查询总数:在工作负荷形状中发现更改。
    • 性能见解指示器:发现回归或低效的代码更改。
  5. 如果较高的数据量解释了持续时间增加的情况,则可能会预期速度变慢。 否则,展开时间线中的任务以查看其单个查询。 检测到洞察的查询旁边会显示一个灯泡图标。
  6. 单击带有灯泡图标的查询的 查询文本,即可打开显示该查询性能见解的窗格。
  7. 应用建议的更改并重新运行作业,以确认问题已解决。

有关更深入的查询执行详细信息,请参阅 查询配置文件

Tip

通过这些相同的指标,可以发现慢速运行和以前的快速运行之间的差异。 并排打开这两个运行记录并进行比较:

  • 读取的行数写入的行数,以识别数据量的变化。
  • 用于识别工作负载形态变化的查询总数
  • 性能分析,用于识别自上次运行以来引入的性能低效问题。

查询性能指标限制

  • 这些指标和见解仅适用于 无服务器 Lakeflow 作业。 在经典计算资源上运行的作业不会显示此信息。
  • Azure Databricks 会汇总一次作业运行中前 100 个查询的指标。 如果某次运行包含的查询超过 100 个,则总数仅反映前 100 个查询。