我正在尝试编写一个spark数据源包。
我的数据源工作很简单。
我能够完成上述工作。但是我想在构造数据帧后删除临时文件。
由于Spark懒惰地构造数据帧,因此无法从我的DatasetRelation中删除它。因此,排除了从DefaultSource或DatasetRelation中删除的选项。
另一个选项是在ShutdownHookManager中添加我的临时文件夹,它会在火花关闭期间删除我的临时文件夹。但不幸的是ShutdownHookManager是私有的。
另一个选项是获取spark使用的临时目录,并在关机期间删除它。有一些由spark创建的临时目录。但是我无法获得spark创建的临时目录名称。 Spark在其目录名中创建带有UUID的临时目录。此外,没有环境变量来获取此临时目录。所以也不能使用这个选项。
还有其他选项可以删除用于在spark中构建数据框的临时文件吗?
答案 0 :(得分:1)
从远程系统获取内容并将内容存储在临时文件中
你可能不应该在火花中这样做。如果您在外部脚本中执行此操作,则可以将该脚本的路径传递给spark,然后spark会将其复制到集群并在之后将其删除。