Lakeflow Spark 声明性管道概念

了解 Lakeflow Spark 声明性管道(SDP)是什么、定义它的核心概念(如管道、流式处理表和具体化视图),以及这些概念之间的关系以及在数据处理工作流中使用它的好处。

注释

Lakeflow Spark 的声明式管道需订购 高级版。 有关详细信息,请联系 Databricks 帐户团队。

什么是 SDP?

Lakeflow Spark 声明性管道是一个声明性框架,用于在 SQL 和 Python 中开发和运行批处理和流式处理数据管道。 Lakeflow SDP 扩展并可与 Apache Spark 声明性管道互作,同时在性能优化的 Databricks 运行时上运行,Lakeflow Spark 声明性管道 flows API 使用与 Apache Spark 和结构化流相同的数据帧 API。 SDP 的常见用例包括从数据源(如云存储,包括 Amazon S3、Azure ADLS Gen2 和 Google Cloud Storage)和消息总线(如 Apache Kafka、Amazon Kinesis、Google Pub/Sub、Azure EventHub 和 Apache Pulsar)进行增量数据摄取,以及使用无状态和有状态运算符的增量批处理和流转换,以及在事务存储之间(如消息总线和数据库)的实时流处理。

有关声明性数据处理的更多详细信息,请参阅 Databricks 中的过程与声明性数据处理

SDP 有什么好处?

与使用 Apache SparkSpark Structured Streaming API 开发数据流程并通过 Lakeflow Jobs 手动编排在 Databricks Runtime 上运行相比,SDP 的声明性特性提供了以下优势。

  • 自动业务流程:SDP 自动协调处理步骤(称为“流”),以确保正确的执行顺序和最大并行度级别以实现最佳性能。 此外,管道会自动高效地重试暂时性故障。 重试过程从最精细且经济高效的单元开始:Spark 任务。 如果任务级重试失败,SDP 会继续重试流,然后在必要时重试整个管道。
  • 声明性处理:SDP 提供声明性函数,可将数百甚至数千行手动 Spark 和结构化流式处理代码减少到几行。 SDP AUTO CDC API 简化了变更数据捕获(CDC)事件的处理,同时支持 SCD 类型 1 和 SCD 类型 2。 它无需手动代码来处理无序事件,并且不需要了解流式处理语义或水印等概念。
  • 增量处理:SDP 为具体化视图提供 增量处理 引擎。 若要使用它,请使用批处理语义编写转换逻辑,并且引擎只会尽可能处理数据源中的新数据和更改。 当源中发生新数据或更改时,增量处理会降低低效的重新处理,并且无需手动代码来处理增量处理。

关键概念

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

此图显示了 SDP 的核心概念在非常高的水平上如何相互关联

Flows

流是 SDP 中支持流式处理和批处理语义的基础数据处理概念。 流从源读取数据,应用用户定义的处理逻辑,并将结果写入目标。 SDP 与 Spark 结构化流共享相同的流式处理类型(追加更新完成)。 (目前,仅公开 追加 流。有关详细信息,请参阅 结构化流式处理中的输出模式

Lakeflow Spark 声明性管道还提供其他流类型:

  • AUTO CDC 是 Lakeflow SDP 中唯一的流式处理流,可处理无序 CDC 事件,并支持 SCD 类型 1 和 SCD 类型 2。 自动 CDC 在 Apache Spark 声明性管道中不可用。
  • 具体化视图 是 SDP 中的批处理流,仅尽可能处理源表中的新数据和更改。

有关更多详细信息,请参阅:

流式处理表

流式处理表是由 Unity Catalog 托管的一种表格形式,同时也是 Lakeflow SDP 的一个流处理目标。 流式处理表可以写入其中一个或多个流式处理流(追加AUTO CDC)。 AUTO CDC 是唯一的流式处理流,仅适用于 Databricks 中的流式处理表。 可以显式定义流式处理流,并独立于其目标流式处理表。 还可以在定义流式处理表时,将流式处理流隐式地包含在其中。

有关更多详细信息,请参阅:

具体化视图

具体化视图也是 Unity 目录托管表的一种形式,是批处理目标。 具体化视图可以有一个或多个具体化视图流被写入其中。 具体化视图不同于流式处理表,因为您总是将流隐式定义为具体化视图定义的一部分。

有关更多详细信息,请参阅:

水槽

是管道的流式传输目标,目前支持 Delta 表、Apache Kafka 主题、Azure EventHubs 主题和自定义的 Python 数据源。 接收器可以写入其中一个或多个流式处理流(追加)。

有关更多详细信息,请参阅:

Pipelines

管道是在 Lakeflow Spark 声明性管道中开发和执行的单元。 管道可以包含一个或多个流、流式处理表、具体化视图和汇聚点。 通过在管道源代码中定义流、流式处理表、具体化视图和接收器,然后运行管道,来使用 SDP。 管道运行时,它会分析定义的流、流式处理表、具体化视图和接收器的依赖关系,并自动协调其执行顺序和并行化。

有关更多详细信息,请参阅:

Databricks SQL 管道

流式处理表和具体化视图是 Databricks SQL 中的两项基础功能。 可以使用标准 SQL 在 Databricks SQL 中创建和刷新流式处理表和具体化视图。 Databricks SQL 中的流式处理表和具体化视图在同一 Azure Databricks 基础结构上运行,并且处理语义与 Lakeflow Spark 声明性管道中的处理语义相同。 在 Databricks SQL 中使用流式处理表和具体化视图时,流将隐式定义为流式处理表和具体化视图定义的一部分。

有关更多详细信息,请参阅:

详细信息