问题背景
任务开始运行符合预期,任务运行1.5天后无法在结果表找到后续的数据
分析过程
1.查看日志确定任务堆栈无异常打印
2.使用print表进行测试数据是未进入flink还是在flink中丢失,异常发生时print表的日志正常打印,结果表无数据
3.任务数据丢失的时间都很规律,都是运行到一个固定时间后续的数据丢失,调整ttl时间确定是否时ttl时间到导致状态被清楚
4.调大后发现确实同丢失的数据确实是ttl时间之后的数据
5.检查作业确认逻辑为left join ,左表为静态表 ,将左表改为维表形式使用观察后续数据无异常
方案结论
1.flink全托管的left join为左流驱动,如果左表不能保持跟新则会在ttl到期时间停止任务的驱动,导致后续数据无法join上
2.先修改ttl定位问题。后续建议静态表使用维表的方式来使
实时计算Flink版数据的状态默认保存36小时,如果某个状态超过36小时没有更新,之前的状态可能会被清掉.修改方式如下
ps: 参数名和参数值之间必须要有间隔,没有空格会保存不了该参数设置或者报错