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 流的动态表需要(可能是组合的)唯一键。通过将 INSERT 和 UPDATE 操作编码为 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