用例
使用結構化的火花從源表讀取數據流(24小時)。應用轉換邏輯等等,最後合並的dataframe目標表。期間如果有任何失敗轉換或合並,磚的工作不應該失敗。
在我的筆記本我以下框架代碼(請忽略語法),我運行在集群工作筆記本。所以每當有失敗handlemicrobatch函數我抓住它並發送警報但是我不把錯誤,因為我們不想失敗磚的工作。但在這樣做檢查點創建即使沒有處理的數據/寫入目標表。是否有辦法避免創建檢查點在失敗的情況下沒有拋出異常的catch塊嗎?
類handlerclass (.......) {
def handlemicrobatch (df: DataFrame batchid:長){
嚐試{
應用轉換邏輯……最後合並的目標
}捕捉{案例e:異常{
錯誤日誌
發送電子郵件
}
}
}
}
val classobj = new handlerclass (……);
val檢查點= dbfs: /檢查點/ < sourcetable >
StartStream () {
val df = readstream . .在源表
val streamingquery = df.writestream
.foreachbatch (classobj。handlemicrobatch _)。
.option (“checkpointLocation檢查點)
............
.start ()
}
嗨@Om辛格
檢查站將幫助你從失敗中恢複過來,所以你的檢查站將創建如果你流的工作失敗。你的關卡會有偏移和許多其他指標需要你流的工作能夠正常工作。你可以找到更多的細節在檢查站的工作方式和使用它的好處是什麼https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html概述
嗨@Om辛格
檢查站將幫助你從失敗中恢複過來,所以你的檢查站將創建如果你流的工作失敗。你的關卡會有偏移和許多其他指標需要你流的工作能夠正常工作。你可以找到更多的細節在檢查站的工作方式和使用它的好處是什麼https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html概述