触发模式和连续模式控制管道处理数据的方式:触发模式会刷新可用数据,然后停止;而连续模式会在新数据到达时使表保持最新状态。 有关需要毫秒延迟的工作负荷,请参阅 Lakeflow 管道中的“使用实时模式”。
管道模式与要计算的表类型无关。 具体化视图和流式处理表都可以在任何管道模式下进行更新。
注释
独立物化视图和流式表的刷新操作始终以触发式管道模式运行。
什么是触发管道模式?
如果管道使用 触发 模式,系统会在更新启动时根据可用数据刷新所有表后停止。
什么是连续管道模式?
如果管道使用 连续执行,则会在新数据到达数据源时对其进行处理,以确保整个管道中的各个表保持最新状态。
为了避免在连续执行模式下进行不必要的处理,管道会自动监视依赖的 Delta 表,并且仅在这些依赖表的内容发生更改时才执行更新。
选择数据管道模式
下表重点介绍了触发和连续管道模式之间的差异:
| 主要问题 | 触发式 | 连续 |
|---|---|---|
| 更新何时停止? | 完成后自动生效。 | 持续运行,直到手动停止。 |
| 处理了哪些数据? | 更新启动时可用的数据。 | 数据在到达已配置的源时实时接收。 |
| 哪种数据新鲜度要求最适合这个? | 数据更新每 10 分钟、每小时或每天运行一次。 | 每 10 秒到几分钟需要一次数据更新。 |
触发式管道可以减少资源消耗和费用,因为计算集群仅运行足够长的时间来更新管道。 但是,在管道被触发之前,不会处理新数据。 连续管道需要始终运行的群集,这更昂贵,但会降低处理延迟。
使用连续作业运行连续管道
Databricks 建议运行连续流水线并设置 连续作业 ,而不是将 流水线模式 的值设置为连续。 当连续作业编排流水线时,该作业管理流水线的执行生命周期,并解锁无服务器 性能模式,如标准模式,而流水线内置的连续模式不支持这些模式。
注释
作业编排仅控制 Lakeflow 管道的执行模式。 独立的实体化视图和流式表总是以触发模式运行,无论作业编排如何。
当作业编排流水线时,该作业决定执行模式,优先于流水线的 流水线模式 设置。 连续作业即使在其流水线的 Pipeline mode 设为触发式时,也会持续运行其流水线;而触发型或计划型作业即使在其流水线的 Pipeline mode 设为连续式时,也会以单次更新的方式运行其流水线。
因为作业会覆盖流水线模式设置,所以当你将流水线封装在连续作业中时,请将流水线的 Pipeline mode 设置为触发式(默认设置)。 这样可以避免流水线在作业之外运行时出现意外行为。
要为管道配置连续作业,请参阅 使用连续作业持续运行管道。
运行带有内置连续模式的流水线
流水线内置的连续设置并未被移除,但Databricks不鼓励新流水线使用该设置,转而采用连续作业模式。 若要在触发和连续之间更改,在创建或编辑管道时,请使用管道设置中的 “管道”模式 选项。 请参阅 “配置管道”。
为连续管道设置触发器间隔
为连续模式配置管道时,可以设置触发器间隔来控制管道为每个流启动更新的频率。 触发间隔是一项流水线配置项,无论流水线是通过其自身的 流水线模式 设置以连续模式运行,还是通过连续作业运行,该配置都适用。
您可以使用 pipelines.trigger.interval 来控制更新表格或整个管道的流程触发间隔。 由于触发流水线对每个表只处理一次,因此 pipelines.trigger.interval 仅用于连续流水线。 Databricks 建议将它设置为单个表,因为流查询和批处理查询的默认值不同。 仅当处理需要控制整个管道图的更新时,才在管道上设置值。
关于流类型默认值以及SQL、Python和流水线配置设置示例pipelines.trigger.interval,请参见流水线触发间隔。