問題
你有一個流的工作使用顯示()顯示DataFrames。
% scala val streamingDF = spark.readStream.schema(模式).parquet (< input_path >)顯示(streamingDF)
檢查點文件被創建,但並沒有被刪除。
您可以驗證問題,方法是導航到根目錄並查看/ local_disk0 / tmp /文件夾中。檢查點文件保留在文件夾中。
導致
命令顯示器(streamingDF)是一個可以顯示的內存水槽實現的數據流為每個micro-batch DataFrame。目錄是一個檢查點跟蹤流所需的更新。
如果你沒有指定一個自定義的檢查點位置,默認的檢查點在創建目錄/ local_disk0 / tmp /。
磚使用檢查點目錄來確保正確的和一致的進展信息。關閉流時,故意或偶然,檢查點目錄允許磚重啟和接究竟在什麼地方。
如果流被取消關閉流從筆記本,磚的工作試圖清理力所能及的檢查點目錄。如果流以其他方式終止,或者終止工作,檢查點目錄沒有清理幹淨。
這是設計。
解決方案
你可以防止不必要的檢查點文件下麵的指導方針。
- 不應該使用顯示器(streamingDF)在生產工作。
- 如果顯示器(streamingDF)是強製性的用例,您應該手動指定檢查點目錄使用Apache火花配置選項spark.sql.streaming.checkpointLocation。
- 如果您手動指定檢查點目錄,你應該定期刪除任何剩餘的文件在這個目錄中。這可以每周完成。