Paimon的时效性和一致性是如何保证的?
提到Paimon的时效性与一致性,就必须要提到Paimon的快照文件,快照(snapshot)文件是读取Paimon表数据的入口。消费者可以通过快照文件,查询在该快照文件产生时刻的Paimon表中的具体数据。因此,通过读取不同的快照文件,消费者可以查询Paimon表在不同时间点的状态,在流作业中实现消费位点的修改,以及在批作业中实现time travel功能。
如何保证时效性?
数据写入Paimon表时,Paimon writer算子会首先将数据缓存在内存以及临时文件中。在Flink作业创建检查点(Checkpoint)后,才会将临时文件进行提交(Commit),并产生快照(Snapshot)文件。下游的流式消费者将监听Paimon表的快照文件列表,发现新的快照文件后,才会读取该快照文件对应的变更数据。
因此,Paimon的时效性受快照文件产生频率的影响,而在Flink作业没有反压的情况下,产生快照文件的时间间隔等同于Flink作业创建检查点的时间间隔(checkpoint interval)。也就是说,Paimon表的时效性等同于Flink作业创建检查点的时间间隔。然而,创建检查点的时间间隔过小,可能会对Flink作业的运行效率产生负面影响。在使用Paimon表时,我们建议将Flink作业创建检查点的时间间隔设置为1分钟至10分钟。且根据业务的接受程度,应尽可能提高这一时间间隔,以进一步提高Paimon表的读写效率。
如何保证一致性?
Paimon使用两阶段提交协议将数据进行原子化的提交。对于同时写入同一张Paimon表的两个Flink作业:
•不修改同一个分桶内的数据时,两个作业中的提交操作可同时进行,并保证sequential级别的一致性。<

最低0.47元/天 解锁文章
1053

被折叠的 条评论
为什么被折叠?



