了解什么是 Lakeflow 声明性管道、定义它的核心概念(如管道、流式处理表和具体化视图),以及这些概念之间的关系,以及在数据处理工作流中使用它的好处。
注释
Lakeflow 声明性管道需要 高级方案。 有关详细信息,请联系 Databricks 帐户团队。
什么是 Lakeflow 声明式管道?
Lakeflow 声明性管道是一个声明性框架,用于在 SQL 和 Python 中开发和运行批处理和流式处理数据管道。 Lakeflow 声明性管道在性能优化的 Databricks Runtime (DBR)上运行,Lakeflow 声明性管道 flows
API 使用与 Apache Spark 和结构化流式处理相同的数据帧 API。 Lakeflow 声明性管道的常见用例包括来自云存储(包括 Amazon S3、Azure ADLS Gen2 和 Google Cloud Storage)和消息总线(如 Apache Kafka、Amazon Kinesis、Azure EventHub 和 Apache Pulsar)的增量数据引入、具有无状态和有状态运算符的增量批处理和流转换,以及事务存储(如消息总线和数据库)之间的实时流处理。
有关声明性数据处理的更多详细信息,请参阅 Databricks 中的过程与声明性数据处理。
Lakeflow 声明式管道的优点是什么?
与使用 Apache Spark 和 Spark 结构化流式处理 API 开发数据管道并通过 Lakeflow 作业在 Databricks Runtime 上手动编排运行它们相比,Lakeflow 声明性管道的声明性特性提供了以下优势。
- 自动业务流程:Lakeflow 声明性管道自动协调处理步骤(称为“流”),以确保正确的执行顺序和最大并行度级别以实现最佳性能。 此外,Lakeflow 声明性管道会自动高效地重试暂时性故障。 重试过程从最精细且经济高效的单元开始:Spark 任务。 如果任务级重试失败,Lakeflow 声明性管道会继续重试流,然后在必要时重试整个管道。
- 声明性处理:Lakeflow 声明性管道提供声明性函数,可将数百甚至数千行手动 Spark 和结构化流式处理代码减少到几行。 Lakeflow 声明式管道中的 AUTO CDC API 简化了对变更数据捕获 (CDC) 事件的处理,并同时支持 SCD 类型 1 和 SCD 类型 2。 它无需手动代码来处理无序事件,并且不需要了解流式处理语义或水印等概念。
关键概念
下图说明了 Lakeflow 声明性管道最重要的概念。
流
流是 Lakeflow 声明式管道中支持流式处理和批处理语义的基础数据处理概念。 流从源读取数据,应用用户定义的处理逻辑,并将结果写入目标。 Lakeflow 声明性管道与 Spark 结构化流共享相同的流式处理类型(追加、 更新、 完成)。 (目前,仅公开 追加 流。有关详细信息,请参阅 结构化流式处理中的输出模式。
Lakeflow 声明性管道还提供其他流类型:
- AUTO CDC 是 Lakeflow 声明性管道中唯一的流式处理流,用于处理无序 CDC 事件并支持 SCD 类型 1 和 SCD 类型 2。
- 具体化视图 是 Lakeflow 声明性管道中唯一的批处理流,只要可能,才会处理源表中的新数据和更改。
有关详细信息,请参阅:
水槽
接收器是 Lakeflow 声明性管道的流式处理目标,目前支持 Delta 表、Apache Kafka 主题和 Azure EventHubs 主题。 接收器中可以写入一个或多个流式处理流(追加)。
有关详细信息,请参阅:
Pipelines
在 Lakeflow 声明式管道中,管道是用于开发和执行的基本单元。 管道可以包含一个或多个流、流式处理表、具体化视图和接收器。 通过在管道源代码中定义流、流表、物化视图和接收器,然后运行管道,可以使用 Lakeflow 声明式管道。 管道运行时,它会分析定义的流、流式处理表、具体化视图和接收器的依赖关系,并自动协调其执行顺序和并行化。
有关详细信息,请参阅: