檢查點文件不刪除當使用顯示()

學習如何阻止顯示(streamingDF)檢查點文件使用了大量的存儲空間。

寫的亞當Pavlacka

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

問題

你有一個流的工作使用顯示()顯示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
  • 如果您手動指定檢查點目錄,你應該定期刪除任何剩餘的文件在這個目錄中。這可以每周完成。
這篇文章有用嗎?