探索 Lakeflow 声明性管道

已完成

Lakeflow 声明性管道是 Azure Databricks 中的一个框架,用于生成和运行批处理和流式处理数据管道。 Lakeflow 声明性管道允许他们声明所需的数据流和结果,而不是要求工程师为数据移动和转换编写分步说明。 然后,系统会负责协调执行、确保可靠性和管理增量更新。 此框架中的管道可包含引入和处理数据的流、使用新事件持续更新的流式处理表、维护预计算结果的具体化视图,以及将输出传送到外部系统的接收器。

它的目标是解决什么问题?

传统的数据工程管道通常是命令式和低水平的。 开发人员必须准确定义如何引入数据、管理状态、处理延迟到达的事件、从故障中恢复以及高效处理增量更新。 这既耗时又容易出错,尤其是在将批处理工作负荷与实时流式处理需求组合在一起时,或者在处理变更数据捕获方案时。 Lakeflow 声明性管道通过简化大部分操作复杂性来解决这些挑战。 工程师无需担心步骤之间的检查点、重试策略或依赖关系,只需描述需要哪些数据转换和输出,框架可确保管道正确且一致地执行。

有什么好处?

声明性方法具有多种优势:

  • 它通过让工程师专注于业务逻辑而不是操作细节,进而简化开发。
  • 它通过 增量处理提高效率:具体化视图和流仅重新处理新的或更改的数据,从而降低计算成本和延迟。
  • 它将 流式处理和批处理 语义统一起来,因此同一框架可以同时为实时工作负荷和计划工作负荷提供支持。
  • 可靠性 是通过多个级别的自动重试、依赖管理以及管道中流程的协调构建的。
  • 它还为常见的企业需求(例如 变更数据捕获渐变维度)提供本机支持,从而减少了这些方案所需的自定义代码量。
  • Lakeflow 声明性管道可以根据工作负荷 动态缩放 资源,这意味着它可以处理数据量增加,而无需手动干预。

关键概念

下图说明了 Lakeflow 声明性管道最重要的概念。

Lakeflow 声明性管道概念示意图。

管道

管道是顶级结构,其中包含 Lakeflow 声明性管道中的所有逻辑和执行。 它定义了一组共同构成数据系统的流、流式处理表、具体化视图和接收器。 管道会自动了解组件之间的依赖关系,确定正确的执行顺序,并处理容错和重试。 对于数据工程师,管道充当单个定义,用于捕获引入、转换和交付的完整生命周期。

Flow

流表示管道中的转换步骤。 它从源读取数据、应用逻辑并将结果写入目标。 流可以是批处理流,也可以是流式处理,具体取决于工作负荷的需求。 它们可以在追加模式下运行,其中新数据直接添加到目标,也可以在自动数据变化捕获(AUTO CDC)模式下运行,该模式中将跟踪并应用变化,以维持源的最新表示。 流是数据在管道内移动和演变的主要机制。

数据流表

流式处理表是一种托管表,可持续引入和更新新数据。 它是流式处理流的自然目标,确保在事件到达时数据保持新鲜。 流式处理表与 Unity Catalog 无缝集成,因此它们在 Databricks 中像其他表一样得到管理和控制。 它们可以捕获原始事件数据或维护已处理的表示形式,因为它们是托管资源,因此它们会自动受益于管道框架的可靠性、业务流程和增量逻辑。

具体化视图

具体化视图是一种托管表,旨在用于面向批量处理但以增量方式进行的处理。 具体化视图仅处理自上次运行以来已更改的数据,而不是每次重新计算整个数据集。 这使复杂的转换和聚合可以保持最新状态,而无需高成本或长时间运行。 具体化视图可用于在原始引入数据的基础上生成特选数据集、摘要表或分析层。

接收器

接收器是托管表环境外部的管道输出的目标。 接收器主要用于流式处理流,将数据传输到外部系统,例如 Kafka 主题、Azure 事件中心或其他 Delta 表。 它们允许管道不仅管理内部转换,还可以将结果发布到下游服务、应用程序或使用者。 接收器将管道的作用范围扩展到 Databricks 环境之外,使其能够驱动实时数据产品和集成。