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