我试图找出在将某些数据持久保存到磁盘的应用程序之后何时清理Spark。 看代码,似乎ContextCleaner.keepCleaning()正在使用尽力而为的方法进行清理(最新一次调用SparkContext.stop()时)。
我不知道清理失败会发生什么情况,特别是是否有维护任务可以处理?
如果没有,建议采取什么方法来确保进行清理(我们可以创建一个恶魔,但是我们应该如何配置它,以便它可以找到正确的文件并且是必需的?)。
我们需要一种确定性机制,因为集群处理的数据可能包含PII,并且我们需要提供保证将其清除以保持合规性。
谢谢!
答案 0 :(得分:0)
我不确定您使用的是哪个Spark版本。正如您提到的,Spark有一个清洗线程,该线程用于通过弱引用队列自动删除未使用的(弱可达)对象。由于此线程设置为守护程序,并且不会在其中引发异常,因此我认为即使清理线程退出,主线程也将继续运行。