60-150-044-使用-Sink-Flink自定义RetractStreamTableSink

1.美图

在这里插入图片描述

2. 概述

Flink Table/SQL中对于流表TableSink的定义有三类:AppendStreamTable、RetractStreamTableSink 、UpsertStreamTableSink ,这三类主要区别对应不同的流类型,在我看来可以归纳为两种模式:

  1. Insert模式,对应AppendStreamTable,只能执行insert动作,例如窗口聚合结果,每个窗口的结果都是唯一的,不会影响之前窗口的输出结果
  2. Redo模式,对应RetractStreamTableSink /UpsertStreamTableSink,除了执行Insert动作,还可执行Update/Delete动作,也就是结果可更新,例如全局group by聚合,后面的结果会影响之前的输出,RetractStreamTableSink与UpsertStreamTableSink的区别主要在于消息编码格式不同,如果产生一条结果数据需要更新,RetractStreamTableSink需要编码两条消息Delete与Insert,而UpsertStreamTableSink只需要编码成为一条upsert消息即可

猜你喜欢

转载自blog.csdn.net/qq_21383435/article/details/105277074