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