Flink+Paimon的流式CDC更新,只要定义Paimon的主键表,不分区。它的定义就非常像MySQL表的定义。
每天的离线视图可以通过 CREATE TAG 创建,Tag 是一个 snapshot 的引用。Flink、Spark可以通过Time Travel的语法访问到Tag的数据。类似hudi的savepoint。存储本钱通过Paimon的文件复用机制,打十天的Tag实在存储本钱只有一两天的全量本钱,保留100天的分区,最后存储本钱可以达到50倍的节省。
增量视图可以通过 INCREMTENTAL 视图获取到 (好比支持查询两个 TAG 的 DIFF)。
consumer
正在流读的Snapshot如果被Snapshot Expiration给删了,会出现FileNotFoundException。consumer机制就是在Paimon里用了这个机制之后,会在文件体系中记一个进度,当我再读这个Snapshot,Expiration就不会删这个Snapshot,它能保证这个流读的安全,也能做到像类似 kafka group id 流读进度的保存。重启一个作业无状态恢复照旧这个进度。所以consumer机制可以说是流读的根本机制。