状况描述:
Flink从Kafka中消费数据,发现fail了,直接重启之后,跑了5分钟还是fail,怀疑是数据问题。
再次重启之前,把消费者的group-id改了,新的group-id下重启Flink,跑了很久都没fail。
分析:
旧的group-id记录了消费点,新的group-id获取了latest数据,因此可以继续正常运行。
处理方案:
1、保证程序继续运行,用新的group-id继续跑,把数据读到原有的正式ES库;
2、用旧的group-id再启动一个flink实例,把数据读到测试ES库,同时开启log的debug级别;
3、旧的group-id运行失败之后,检查日志,查出有问题的kafka数据;
4、针对flink报错的位置,单独处理异常,try{}catch(RuntimeException e){}。
5、运行加上新的异常处理程序的旧group-id的flink实例,把丢失的时间段内的kafka数据,读入ES中。
重点:
任何异常要单独处理,不允许抛到flink中,不能造成flink运行失败。