在完成一個spark程序後,臨時目錄中會有3個臨時目錄。 目錄名稱如下:spark-2e389487-40cc-4a82-a5c7-353c0feefbb7Apache Spark不會刪除臨時目錄
目錄爲空。
而當星火程序運行在Windows上,一個活潑的DLL文件還留在臨時目錄。 文件的名稱是這樣的:snappy-1.0.4.1-6e117df4-97b6-4d69-bf9d-71c4a627940c-snappyjava
它們是每次運行Spark程序時創建的。所以文件和目錄的數量不斷增長。
如何讓它們被刪除?
Spark版本是1.3.1與Hadoop 2.6。
UPDATE
我跟蹤的火花源代碼。
創造的3 '臨時' 目錄的模塊方法如下:
- DiskBlockManager.createLocalDirs
- HttpFileServer.initialize
- SparkEnv.sparkFilesDir
他們(最終)調用Utils.getOrCreateLocalRootDirs,然後調用Utils.createDirectory,它故意不會將目錄標記爲自動刪除。
createDirectory方法的註釋說:「該目錄保證爲新創建的 ,並且未標記爲自動刪除。」
我不知道他們爲什麼沒有標記。這真的是故意的嗎?
雖然我還沒有測試過,但可能會設置系統屬性org.xerial.snappy.lib.path,以便快速模塊查找快速的DLL,而不是無條件地提取DLL。查看源文件的評論https://github.com/rvs/snappy-java/blob/master/src/main/java/org/xerial/snappy/SnappyLoader.java – zeodtr
但根據https:// github。 com/xerial/snappy-java/issues/46,它可能已經被解決了。也許Spark有更老的庫? – zeodtr