一、场景
离线数仓中,通过flink等引擎实时接入到hive表或者数据湖,怎么判断上一小时的数据已经完全就位
二、解决办法
2.1 适应场景
该办法只能判断消费端上一小时消费积压数据已经消费完
2.2 不适应场景
无法判断生产端因中断(如kafka异常不能写入)积压的写入数据是否已经被消费完
2.3 前提条件
1、生产端正常实时写入,无因故中断积压。消费端正常,当前小时 前两个checkpoint无异常
2、hive表中添加数据处理时间process_time字段
2.4 解决方法
1、已知条件:checkpoint时间为x分钟,checkopint超时时间为y分钟
2、在每小时(x+y)*2分钟后,检测hive表上一个小时分区中process_time字段最大值>max((now()-(x+y)*2分钟),00分) ? 未完整 :完整。