Lakeflow Spark 声明性管道中的接收器

默认情况下,管道流将结果写入由 Unity 目录管理的 Delta 表,通常是流式处理表或具体化视图。 接收器是另一种输出目标,可让您将转换后的数据写入 Databricks 托管存储之外的目标位置,例如事件流服务或自定义数据存储。

接收器与追加流一起使用。 您可以使用某个接收器 API 来定义接收器,然后在 target 定义中将其作为 append_flow 引用。

何时使用接收器

在需要执行以下操作时,Databricks 建议使用接收器:

  • 构建低延迟(例如欺诈检测、实时分析或客户建议)的操作用例,其中数据必须流向消息总线而不是云存储。 对于需要毫秒级延迟的工作负载,请参阅 在 Lakeflow Spark 声明性管道中使用实时模式
  • 将转换后的数据写入由外部 Delta 实例管理的表中,包括 Unity Catalog 托管表和外部表。
  • 执行反向 ETL,将数据写入外部系统,例如将已处理的数据写回 Apache Kafka 主题,供 Azure Databricks 外部使用。
  • 使用 Python 自定义数据源写入 Azure Databricks 原生不支持的格式。

接收器类型

管道支持以下接收端类型:

水槽类型 Description
增量表接收器 写入 Unity 目录托管表或外部 Delta 表。 指定文件路径或完全限定的表名。
Apache Kafka 接收器 使用管道运行时中包含的 Kafka 连接器写入 Apache Kafka 主题。
Azure 事件中心接收器 使用 Kafka 接口写入Azure 事件中心。 使用与 Kafka 输出端相同的选项。
Python自定义接收器 使用已在 spark.dataSource.register 中注册的 Python 自定义数据源向任何数据存储写入数据。
ForEachBatch 接收器 将自定义 Python 逻辑应用于流式数据的每个微批次。 当您需要写入多个目标位置、执行 upsert 操作,或使用不原生支持流式写入的目标时,请使用此项。

接收端 API

管道提供了两个用于创建接收器的 API:

这两种接收器类型都作为 target 一个 append_flow接收器类型引用。

Limitations

  • 接收器仅在Python中可用。 不支持 SQL。
  • 仅支持流式处理查询。 不支持批处理查询。
  • 只有 append_flow 可以写入接收端;create_auto_cdc_flow 和其他流类型均不受支持。
  • 接收端不支持管道期望。
  • 运行完全刷新不会清理以前在接收器中写入的数据。

其他资源