删除Spark数据源中的临时文件

时间:2016-01-07 10:19:17

标签: scala apache-spark

我正在尝试编写一个spark数据源包。

我的数据源工作很简单。

  1. 从远程系统获取内容并将内容存储在临时文件中 档案
  2. 使用临时文件中的内容构建数据框
  3. 我能够完成上述工作。但是我想在构造数据帧后删除临时文件。

    由于Spark懒惰地构造数据帧,因此无法从我的DatasetRelation中删除它。因此,排除了从DefaultSource或DatasetRelation中删除的选项。

    另一个选项是在ShutdownHookManager中添加我的临时文件夹,它会在火花关闭期间删除我的临时文件夹。但不幸的是ShutdownHookManager是私有的。

    另一个选项是获取spark使用的临时目录,并在关机期间删除它。有一些由spark创建的临时目录。但是我无法获得spark创建的临时目录名称。 Spark在其目录名中创建带有UUID的临时目录。此外,没有环境变量来获取此临时目录。所以也不能使用这个选项。

    还有其他选项可以删除用于在spark中构建数据框的临时文件吗?

1 个答案:

答案 0 :(得分:1)

  

从远程系统获取内容并将内容存储在临时文件中

你可能不应该在火花中这样做。如果您在外部脚本中执行此操作,则可以将该脚本的路径传递给spark,然后spark会将其复制到集群并在之后将其删除。