天天看點

Flink Table & SQL AppendStreamTableSink、RetractStreamTableSink、UpsertStreamTableSink

Flink Table & SQL StreamTableSink有三類接口: AppendStreamTableSink、UpsertStreamTableSink、RetractStreamTableSink。

AppendStreamTableSink: 可将動态表轉換為Append流。适用于動态表隻有Insert的場景。

RetractStreamTableSink: 可将動态表轉換為Retract流。适用于動态表有Insert、Delete、Update的場景。

UpsertStreamTableSink: 可将動态表轉換為Upsert流。适用于動态表有Insert、Delete、Update的場景。

注意:

RetractStreamTableSink中: Insert被編碼成一條Add消息; Delete被編碼成一條Retract消息;Update被編碼成兩條消息(先是一條Retract消息,再是一條Add消息),即先删除再增加。

UpsertStreamTableSink: Insert和Update均被編碼成一條消息(Upsert消息); Delete被編碼成一條Delete消息。

UpsertStreamTableSink和RetractStreamTableSink最大的不同在于Update編碼成一條消息,效率上比RetractStreamTableSink高。

上述說的編碼指的是動态表轉換為DataStream時,表的增删改如何展現到DataStream上。