6 Flink Table 和相关概念
1. 动态表
动态表是为了在无界流中实现类似关系型数据库的语义而存在的,动态表把流分为插入流,更新日志流 的形式来持续更新表里的数据并展示出来
1.1 动态表的更新与追加
如下图所示一张动态表通过user字段分组聚合统计url的点击次数,左侧是输入的数据,对应右侧输出的数据。
1.2 动态表到流的转换
最终输出的都是以流的方式把数据输出出来,在动态表中的数据转成流的方式输出时,有三种形式
-
Append-only: 只输出Insert方式的流数据,可以通过指定ChangelogMode.insertOnly()来实现
-
Retrat: 它接受数据的插入,更新前,更新后,删除所有操作,它把insert编码为add message,delete编码为 retract massage,update编码为retract message和add message的组合操作,可以通过指定ChangelogMode.all()来实现**(它是默认的输出方式)**
-
Upsert: 它也会接受所有的操作,它把insert和update操作编码为upsert message,delete操作编码为delete message,它与Retract流的区别在于update操作的时直接基于key更新,只需单个消息编码,因此更加的高效