Flink Append流、Retract流、Upsert流

2022/03/13

Tags: Flink

摘要: 介绍 Flink 中 Append流、Retract流、Upsert流的含义。


Append流

在 Append 流中,仅通过 INSERT 操作修改的动态表,可以通过输出插入的行转换为流。

Retract流

retract 流包含两种类型的 message: add messages 和 retract messages 。

通过将INSERT 操作编码为 add message、将 DELETE 操作编码为 retract message、将 UPDATE 操作编码为更新(先前)行的 retract message 和更新(新)行的 add message,将动态表转换为 retract 流。

OPERATOR ENCODE
insert add
update retract -> add
delete retract

Upsert流

upsert 流包含两种类型的 message: upsert messages 和delete messages。

转换为 upsert 流的动态表需要(可能是组合的)唯一键。通过将 INSERTUPDATE 操作编码为 upsert message,将 DELETE 操作编码为 delete message ,将具有唯一键的动态表转换为流。消费流的算子需要知道唯一键的属性,以便正确地应用 message。与 retract 流的主要区别在于 UPDATE 操作是用单个 message 编码的,因此效率更高。

OPERATOR ENCODE
insert upsert
update upsert
delete delete

https://nightlies.apache.org/flink/flink-docs-release-1.12/zh/dev/table/streaming/dynamic_tables.html