使用 Lakeflow Spark 声明性管道流以增量方式加载和处理数据

数据在管道中通过 处理。 每个流都包含 一个查询 ,通常为 一个目标。 流程将查询处理为批处理,或以增量数据流的形式传输到目标中。 在 Lakeflow Spark 声明性管道中,流存在于其中的一个管道内。

通常,在更新目标的管道中创建查询时,流会被自动定义,但您也可以显式定义额外的流,以便进行更复杂的处理,例如从多个源追加到单个目标。

更新

每次更新其定义的流水线时,流程都会运行。 该流将创建或更新具有最新可用数据的表。 根据流的类型和对数据所做的更改的状态,更新可能会执行增量刷新,该刷新仅处理新记录或执行完全刷新,以重新处理数据源中的所有记录。

默认流和追加流

在更新目标的管道中创建查询时,会自动定义 默认流 。 对于流式处理表,默认流是一个 追加 流,它为每个更新添加新行,并且其名称与目标相同。 在单个步骤中创建流及其目标是使用管道的最常用方法,你可以使用它引入或转换数据。

还可以将流与目标分开定义,这样多个流就可以将数据追加到单个目标。 当您需要执行以下操作时,这会很有用:

  • 添加可向现有流式表追加数据的流源,无需进行全量刷新。
  • 用缺失的历史数据回填流式表。
  • 在不使用 UNION 子句的情况下,合并来自多个来源的数据。

有关创建默认流和显式流的示例,请参阅 Lakeflow Spark 声明性管道中的“使用流”。

流类型

流表和物化视图的默认流动方式为追加流。 还可以创建流以从 更改数据捕获 数据源进行读取。 下表描述了不同类型的流。

流类型 Description
追加 追加流是最常见的流类型,其中源中的新记录在每次更新时写入目标系统。 它们对应于结构化流处理中的附加模式。 可以添加 ONCE 标志,指定一个批处理查询,该查询的数据应该只插入目标一次,除非目标完全刷新。 任意数量的追加流都可以写入特定目标。
默认流(使用目标流式处理表或具体化视图创建)将具有与目标相同的名称。 其他目标没有默认流。
自动 CDC (以前 应用更改 自动 CDC 流引入包含更改数据捕获(CDC)数据的查询。 自动 CDC 流只能面向流式处理表,并且源必须是流源(即使在使用ONCE流的情况下,也必须如此)。 多个自动 CDC 流可以面向单个流式处理表。 作为自动 CDC 流目标的流式表只能被其他自动 CDC 流用作目标。
有关 CDC 数据的详细信息,请参阅 AUTO CDC API:使用管道简化更改数据捕获
更新(公共预览版) 更新流会将全局、非加水印的流式聚合结果输出到接收器,并且仅发出每个批次中发生更改的记录。
更新流仅在Python中可用。 请参阅 update_flow

其他资源

有关流及其用法的详细信息,请参阅以下主题: