(15)使用checkpoint進行故障恢復

2021-09-25 10:02:25 字數 881 閱讀 4417

用過spark streaming的應該都比較了解checkpoint機制。對於spark structured streaming 假如存在聚合函式,join等操作的時候實際上也是要維護中間狀態的,這種情況下就需要開啟checkpoint。當然,即使沒有非狀態的運算元,由於structured streaming是自己管理offset的,不會將offset提交到kafka或者zk,所以為了恢復的時候從上次位置重啟,也要開啟checkpoint。

使用checkpoint和預寫日誌,如果發生故障或關機,可以恢復之前的查詢的進度和狀態,並從停止的地方繼續執行。通過給查詢任務配置checkpointlocation引數,開啟checkpoint,查詢任務將將所有進度資訊(即,每次觸發中處理的偏移範圍)和執行聚合儲存到checkpoint。此檢checkpoint儲存位置必須是hdfs相容檔案系統中的路徑,並且可以在啟動查詢時將其設定為datastreamwriter中的選項。

aggdf

.writestream

.outputmode("complete")

.option("checkpointlocation", "path/to/hdfs/dir")

.format("memory")

.start()

具體測試**如下:

package bigdata.spark.structuredstreaming.kafkasourceoperator

import org.apache.spark.sparkconf

import org.apache.spark.sql.sparksession

object structuredkafkawordcount

}

spark使用checkpoint恢復的兩個小坑

1.spark在使用checkpoint恢復的時候不能再執行流的定義的流程,新加入的流的狀態在恢復完成後的spark狀態下處於未初始化狀態,在spark根據checkpoint恢復的時候將不會再對各個流進行初始化,而是直接儲存的狀態中恢復。這將導致新加入的流還未初始化就被呼叫,丟擲stream還未初...

WPF使用IDataErrorInfo進行資料校驗

原文 wpf使用idataerrorinfo進行資料校驗 這篇部落格將介紹如何使用idataerrorinfo進行資料校驗。下面直接看例子。乙個customer類,兩個屬性 firstname,age class customer public intage 將customer類繼承idataerr...

WPF使用IDataErrorInfo進行資料校驗

原文 wpf使用idataerrorinfo進行資料校驗 這篇部落格將介紹如何使用idataerrorinfo進行資料校驗。下面直接看例子。乙個customer類,兩個屬性 firstname,age class customer public intage 將customer類繼承idataerr...