例如從kafka消費數據,使用sparkstream計算Wordcount,要求保證準確性,實時性,可用性,你要怎么實現?
如果計算時突然宕機,怎么保證消費kafka數據不丟失,不重復?
使用Kafka對接SparkStreaming計算,那么要保證數據不丟失,和不重復的話,要使用直連方式,并且保證一次性語義,手動管理Offset即可,那么在實現過程中,Offset一定不能丟,所以要手動管理,然后把它保存到其他存儲位置即可,每次能拿到保存好的Offset就OK,同時如果Kafka突然宕機或者SparkStreaming宕機都不用擔心,只要設置好一次性語義保存冪等數據不會丟,而且Offset在這次任務失敗時候不會被提交,所以也不會更新,下次再次消費即可。