spark結(jié)構(gòu)化流--kafka

我們的場景是通過spark-streaming讀取kafka數(shù)據(jù),實時持久化到hdfs上。并按day和hour分區(qū)。就像這種格式:

kafka:0.10.2.0

hdfs:2.7.3

spark:2.2.0


核心代碼如下:

repartition是由于生成文件數(shù)量過多,合理合并分區(qū)能減少。如果用coalesce會導(dǎo)致任務(wù)不能并行(如果是1, 就那就只有一個node運行)。

checkpoint能保證任務(wù)掛掉,在kafka數(shù)據(jù)沒有過期前重啟能繼續(xù)正確的運行。但是超過時間會報錯Kafka OffSetOutOfRange而導(dǎo)致失敗。如果此時你刪掉checkpoint dir,任務(wù)能正常執(zhí)行但是會發(fā)現(xiàn)它并不會去讀取kafka分區(qū)的數(shù)據(jù)。這是因為還有一個地方記錄著你的流式處理元信息。

它記錄著你流式批次信息,如果不刪除,spark-streaming會認(rèn)為你一直在提交過期的job,導(dǎo)致數(shù)據(jù)不被處理。


當(dāng)然,這只是結(jié)構(gòu)化流一點使用心得。更多的文檔信息在https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容