刚接一个streaming的代码,有一个需求:group幽灵
问题:spark消费kafka数据,消费过程没有任何问题,数据正常消费,编译没问题,运行也没问题。
但是:无论从哪里,kafka manager或者其他得,都找不到group组。
检查kafka,检查ETLspark代码
突然发现,代码里修改了 enable.auto.commit:false
就是设置手动提交offset,但是在读数据的时候有获取offset,但是最后没有提交offset的操作。。。
这样导致的结果就是:
数据正常消费(因为程序容错做的非常好,平台也非常稳定,就没有出现过宕机服务挂掉的情况,数据就一直没有问题),但一直没有groupid;
可能不懂,也可能是粗心大意了,但这样的代码真的出现问题,针对非离线实时共存的Lambda架构,就会无法找回丢失的数据,所以希望所有开发者小心。
解决方式也很简单
enable.auto.commit:设置为true
或者
处理完数据后,一定不要忘记提交offset到kafka
问题看似很简单,但是这个坑你如果没踩过。。。真的 疯狂得测试把。。。。哈哈哈哈(本人已被逼疯~~)