Flink 是否需要 RETRACT 流?

Is RETRACT stream necessary in Flink?

Flink中使用RETRACT流时,update消息分两阶段完成,而使用UPSERT流时,分一级完成,效率更高。

但是,根据this pageDynamic table转换为DataStream时,UPSERT流是不允许的,为什么会有这样的限制?在 Flink 的设计中,将 RETRACT 完全替换为 UPSERT 会遇到什么样的问题?

What kinds of problems will be met when we totally replace RETRACT with UPSERT in Flink's design?

正如您链接到的页面提到的那样,upsert 流需要一个主键。因此,摆脱 retract streams 作为一个概念将打破所有你没有这样的密钥(根本没有或只是没有定义)的场景。