在完成一个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