历史写入的问题
用流任务将数据写入到paimo表的最新分区中
用批处理任务定时覆盖写入到历史分区中
我有个问题,这个为什么要写到历史分区中啊。历史分区可以理解为历史快照吗?历史快照写了就看不到变更的记录啊,回滚的时候也无法回滚到变更前的数据了。还是理解为前一天的全量历史表?
然后讲查询案例的时候 paimon 一般会存储2份数据吗?一份历史一份实时?这个之前的课里面没有讲过啊。
3
收起
正在回答 回答被采纳积分+1
1回答
徐老师
2024-03-21 09:06:30
1:这里的最新分区和历史分区对应的是Paimon中的分区表(类似于hive中的分区表),假设这个表的分区字段是dt,今天是20240102,那么最新分区就是dt=20240102,历史分区对应的就是20240102之前的某一个分区中的数据。
批处理任务定时覆盖写入到历史分区中是为了保证数据的准确性,因为流处理还是可能会存在数据异常问题的。
课程中有这一句话。
这里的批处理任务相当于实现了基于离线数据定时修正(回填)实时数据的功能,这样其实就解决了离线和实时数据一致性的问题。
当然,批处理任务定时覆盖写入这个流程也不是必须的,如果可以保证流处理任务整个链路100%没有问题,那就不需要批处理任务定时覆盖写入这个处理流程了。
历史分区和历史快照不是一个概念。
此时历史快照还是在的,除非历史快照触发过期策略被删除。
2:后续讲的查询案例,历史和实时说的是分区,不是说存储2份。
例如:dt=20240102对应的是今天,那么这个分区就是最新分区;
dt=20240101对应的是昨天,那么这个分区就是历史分区。
课程中是这样讲的。
针对企业中的查询需求,实时报表直接查询Paimon表最新分区中的数据即可,此时就算数据有一些偏差也不影响大局。 第二天查询前一天报表的时候,查询的就是Paimon表历史分区中的数据了【解释:因为前一天的数据我们已经通过批处理任务重新覆盖写入了】,此时这份历史数据已经被修正过了。
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星