数据在管道中通过 流 处理。 每个流都包含 一个查询 ,通常为 一个目标。 流程将查询处理为批处理,或以增量数据流的形式传输到目标中。 在 Lakeflow Spark 声明性管道中,流存在于其中的一个管道内。
通常,在更新目标的管道中创建查询时,流会被自动定义,但您也可以显式定义额外的流,以便进行更复杂的处理,例如从多个源追加到单个目标。
更新
每次更新其定义的流水线时,流程都会运行。 该流将创建或更新具有最新可用数据的表。 根据流的类型和对数据所做的更改的状态,更新可能会执行增量刷新,该刷新仅处理新记录或执行完全刷新,以重新处理数据源中的所有记录。
默认流和追加流
在更新目标的管道中创建查询时,会自动定义 默认流 。 对于流式处理表,默认流是一个 追加 流,它为每个更新添加新行,并且其名称与目标相同。 在单个步骤中创建流及其目标是使用管道的最常用方法,你可以使用它引入或转换数据。
还可以将流与目标分开定义,这样多个流就可以将数据追加到单个目标。 当您需要执行以下操作时,这会很有用:
- 添加可向现有流式表追加数据的流源,无需进行全量刷新。
- 用缺失的历史数据回填流式表。
- 在不使用
UNION子句的情况下,合并来自多个来源的数据。
有关创建默认流和显式流的示例,请参阅 Lakeflow Spark 声明性管道中的“使用流”。
流类型
流表和物化视图的默认流动方式为追加流。 还可以创建流以从 更改数据捕获 数据源进行读取。 下表描述了不同类型的流。
| 流类型 | Description |
|---|---|
| 追加 |
追加流是最常见的流类型,其中源中的新记录在每次更新时写入目标系统。 它们对应于结构化流处理中的附加模式。 可以添加 ONCE 标志,指定一个批处理查询,该查询的数据应该只插入目标一次,除非目标完全刷新。 任意数量的追加流都可以写入特定目标。默认流(使用目标流式处理表或具体化视图创建)将具有与目标相同的名称。 其他目标没有默认流。 |
| 自动 CDC (以前 应用更改) |
自动 CDC 流引入包含更改数据捕获(CDC)数据的查询。 自动 CDC 流只能面向流式处理表,并且源必须是流源(即使在使用ONCE流的情况下,也必须如此)。 多个自动 CDC 流可以面向单个流式处理表。 作为自动 CDC 流目标的流式表只能被其他自动 CDC 流用作目标。有关 CDC 数据的详细信息,请参阅 AUTO CDC API:使用管道简化更改数据捕获。 |
| 更新(公共预览版) |
更新流会将全局、非加水印的流式聚合结果输出到接收器,并且仅发出每个批次中发生更改的记录。 更新流仅在Python中可用。 请参阅 update_flow。 |
其他资源
有关流及其用法的详细信息,请参阅以下主题: