对增量实时表管道运行更新

本文介绍什么是增量实时表管道更新以及如何运行更新。

创建管道并准备好运行后,可以开始更新。 管道更新执行以下操作:

  • 使用正确的配置启动群集。
  • 发现定义的所有表和视图,并检查是否存在任何分析错误,例如列名无效、依赖项缺失和语法错误。
  • 使用最新的可用数据创建或更新表和视图。

可以在管道的源代码中检查是否存在问题,而无需等待使用验证更新来创建或更新表。 Validate功能在开发或测试管道时非常有用,它允许快速查找和修复管道中的错误(例如,错误的表或列名)。

要了解如何创建管道,请参阅教程:运行第一个增量实时表管道

启动管道更新

Azure Databricks 提供多个用于启动管道更新的选项,包括:

  • 增量实时表 UI 中提供了以下选项:
    • 在管道详细信息页上单击 增量实时表启动图标 按钮。
    • 在管道列表中,单击“操作”列中的 右箭头图标
  • 若要在笔记本中启动更新,请在笔记本工具栏中单击“增量实时表”>“启动”。 请参阅从笔记本打开或运行增量实时表管道
  • 可以使用 API 或 CLI 以编程方式触发管道。 请参阅增量实时表 API 指南
  • 可以使用增量实时表 UI 或作业 UI 将管道计划为作业。 请参阅计划管道

增量实时表如何更新表和视图

表和视图的更新,以及这些表和视图的更新方式,取决于更新类型:

  • 全部刷新:将更新所有实时表,以反映其输入数据源的当前状态。 对于所有流式处理表,新行将追加到表中。
  • 全部完全刷新:将更新所有实时表,以反映其输入数据源的当前状态。 对于所有流式处理表,增量实时表会尝试清除每个表中的所有数据,然后从流式处理源加载所有数据。
  • 刷新选择refresh selection 的行为与 refresh all 相同,但只允许刷新选定的表。 将更新选定的实时表,以反映其输入数据源的当前状态。 对于选定的流式处理表,新行将追加到表中。
  • 完全刷新选择full refresh selection 的行为与 full refresh all 相同,但只允许对选定的表执行完全刷新。 将更新选定的实时表,以反映其输入数据源的当前状态。 对于选定的流式处理表,增量实时表会尝试清除每个表中的所有数据,然后从流式处理源加载所有数据。

对于现有实时表,更新的行为与具体化视图上的 SQL REFRESH 相同。 对于新的实时表,其行为与 SQL CREATE 操作相同。

为所选表启动管道更新

你可能希望仅重新处理管道中选定表的数据。 例如,在开发过程中,只更改了一个表并希望减少测试时间,或者管道更新失败,你只想刷新失败的表

注意

只能对触发的管道使用选择性刷新。

若要启动仅刷新所选表的更新,请在“管道详细信息”页上:

  1. 单击“选择要刷新的表”。 此时将显示“选择要刷新的表”对话框。

    如果看不到“选择要刷新的表”按钮,请确保“管道详细信息”页显示了最新的更新,并且更新已完成。 如果最近更新未显示 DAG,例如,由于更新失败,因此未显示“选择要刷新的表”按钮。

  2. 若要选择要刷新的表,请单击每个表。 突出显示并标记所选表。 若要从更新中删除表,请再次单击该表。

  3. 单击“刷新选择”。

    注意

    “刷新选择”按钮在括号中显示所选表的数量。

若要重新处理已为所选表引入的数据,请单击“刷新选择”按钮旁边的 蓝色向下脱字号,然后单击“完全刷新选择”。

为失败表启动管道更新

如果管道更新由于管道图中的一个或多个表中的错误而失败,则可以仅启动失败表和任何下游依赖项的更新。

备注

排除的表不会刷新,即使它们依赖于失败的表。

要更新失败的表,请在“管道详细信息”页上,单击“刷新失败的表”。

仅更新所选失败的表:

  1. 单击“刷新失败的表”按钮旁边的 下拉按钮,然后单击“选择要刷新的表”。 此时将显示“选择要刷新的表”对话框。

  2. 若要选择要刷新的表,请单击每个表。 突出显示并标记所选表。 若要从更新中删除表,请再次单击该表。

  3. 单击“刷新选择”。

    注意

    “刷新选择”按钮在括号中显示所选表的数量。

若要重新处理已为所选表引入的数据,请单击“刷新选择”按钮旁边的 蓝色向下脱字号,然后单击“完全刷新选择”。

检查管道中是否存在错误,而无需等待表更新

重要

增量实时表Validate更新功能为公共预览版

若要在不运行完整更新的情况下检查管道的源代码是否有效,请使用“验证”Validate更新解析管道中定义的数据集和流的定义,但不具体化或发布任何数据集。 验证期间发现的错误(例如,错误的表或列名)会在 UI 中报告。

要运行Validate更新,请在管道详细信息页上点击“开始”旁边的“蓝色向下脱字号”,然后点击“验证”。

Validate更新完成后,事件日志会显示仅与Validate更新相关的事件,并且 DAG 中不显示任何指标。 如果发现错误,则事件日志中提供了详细信息。

只能查看最新Validate更新的结果。 如果Validate更新是最近运行的更新,可以在更新历史记录中选择它以查看结果。 如果在Validate更新后运行另一个更新,则结果在 UI 中不再可用。

连续与触发管道执行

如果管道使用“触发”执行模式,系统会在成功刷新一次管道中的所有表或选定表之后停止处理,确保在更新过程中根据更新启动时可用的数据更新每个表。

如果管道使用“连续”执行,增量实时表会在新数据到达数据源时对其进行处理,使整个管道中的表保持最新。

执行模式与要计算的表的类型无关。 具体化视图和流式处理表都可以在任一执行模式下更新。 为了避免在连续执行模式下进行不必要的处理,管道会自动监视依赖 Delta 表,并仅在这些依赖表的内容发生更改时才执行更新。

注意

增量实时表运行时无法检测非增量数据源中的更改。 该表仍会定期更新,但具有较高的默认触发间隔,以防止过度重新计算减慢群集上发生的任何增量处理。

数据管道执行模式比较表

下表突出显示了这些执行模式之间的差异:

触发 连续
更新何时停止? 完成后自动运行。 连续运行,直到手动停止。
处理哪些数据? 更新启动时可用的数据。 到达配置的源的所有数据。
此模式最适合哪些数据新鲜度要求? 数据更新每隔 10 分钟、一小时或一天运行。 需要每隔 10 秒到几分钟进行数据更新。

触发管道可以减少资源消耗和费用,因为群集仅在执行管道时运行。 但是,在触发管道之前,不会处理新数据。 连续管道需要一个始终运行的群集,其成本较高,但可以减少处理延迟。

可以使用设置中的“管道模式”选项配置执行模式。

如何选择管道边界

增量实时表管道可以处理对单个表、具有依赖关系的多个表、没有关系的多个表或具有依赖关系的多个独立表流的更新。 本部分包含有助于确定如何拆分管道的注意事项。

较大的增量实时表管道具有许多优势。 其中包括:

  • 更有效地使用群集资源。
  • 减少工作区中的管道数量。
  • 降低工作流业务流程的复杂性。

有关如何拆分处理管道的一些常见建议包括:

  • 在团队边界上拆分功能。 例如,数据团队可以维护用于转换数据的管道,而数据分析师可以维护用于分析转换后的数据的管道。
  • 在特定于应用程序的边界上拆分功能,以减少耦合并方便重用通用功能。

开发和生产模式

你可以通过切换使用开发模式和生产模式来优化管道执行。 使用管道 UI 中的 Delta Live Tables 环境切换图标 按钮在这两个模式之间切换。 默认情况下,管道在开发模式下运行。

当你在开发模式下运行管道时,增量实时表系统将执行以下操作:

  • 重用群集,以避免重新启动产生的开销。 默认情况下,群集在启用开发模式后会运行两个小时。 可以使用配置计算设置中的 pipelines.clusterShutdown.delay 设置更改此选项。
  • 禁用管道重试,以便可以立即检测和修复错误。

在生产模式下,增量实时表系统执行以下操作:

  • 为特定的可恢复错误(包括内存泄漏和过期凭据)重新启动群集。
  • 在发生特定错误(例如启动群集失败)时重试执行。

注意

在开发和生产模式间切换只控制群集和管道执行行为。 目录中用于发布表的存储位置和目标模式必须配置为管道设置的一部分,在模式之间切换时不受影响。

计划管道

可以手动启动触发的管道,也可以使用 Azure Databricks 作业按计划运行管道。 可以直接在增量实时表 UI 中创建和计划具有单个管道任务的作业,也可以在作业 UI 中将管道任务添加到多任务工作流。

若要在增量实时表 UI 中为该作业创建单任务作业和计划,请执行以下操作:

  1. 单击“计划”>“添加计划”。 如果管道包含在一个或多个计划作业(例如,计划 (5))中,则“计划”按钮将更新以显示现有计划的数量。
  2. 在“作业名称”字段中输入作业的名称。
  3. 将“计划”设置为“已计划”。
  4. 指定时间段、开始时间和时区。
  5. 配置一个或多个电子邮件地址,以接收有关管道启动、成功或失败的警报。
  6. 单击“创建”。