流與文件水槽:複蘇的問題如果你改變檢查點或輸出目錄

學習如何解決問題,出現複蘇如果你改變檢查點或輸出目錄流媒體文件時下沉。

寫的亞當Pavlacka

去年發表在:2022年5月17日

當你流數據到一個文件中,你應該總是一起改變檢查點和輸出目錄。否則,你可以得到故障或意外的輸出。

Apache火花在輸出目錄中創建一個文件夾命名_spark_metadata。這個文件夾包含寫前每批次運行日誌。這就是火花時隻有一次保證寫入文件係統。這個文件夾包含為每個批量保存文件(命名為0,1,2,3等+ 19.緊湊,n.compact等)。這些文件包含JSON,讓細節的輸出特定的批處理。的幫助下這些數據,一旦一批成功,任何重複的批產量就會被丟棄。

如果你改變檢查點目錄而不是輸出目錄:

當你改變檢查點目錄,流作業將批次從0開始。從0已經出現在了_spark_metadata文件夾,輸出文件將被丟棄,即使它有新的數據。如果你停止之前的運行在500批,下一次運行相同的輸出目錄和不同的檢查點目錄將隻在第501批輸出。所有之前的批次將默默地丟棄。

如果你改變輸出目錄而不是檢查點目錄:

當你改變輸出目錄,它就失去了所有的批處理的數據_spark_metadata文件夾中。但火花從下一批開始寫根據檢查點目錄。例如,如果前麵的運行是在500年,第一個寫的新工作將在501年文件_spark_metadata和你失去了所有的舊批次。當你閱讀這些文件,你會錯誤元數據批處理0(或第一個緊湊的文件(19.)緊湊)沒有找到

文件流。

這篇文章有用嗎?