我正在'本地'模式下运行一个spark应用程序。它正确检查了checkpointFolder配置中定义的目录。但是,我看到有两个问题导致了一些磁盘空间问题。
1)由于我们有多个运行应用程序的用户,服务器上的检查点文件夹由执行它的第一个用户创建,这导致其他用户的运行因操作系统上的权限问题而失败。有没有办法在checkpointFolder中提供相对路径,例如checkpointFolder =〜/ spark / checkpoint?
2)我在运行后使用spark.worker.cleanup.enabled = true config来清理checkpoint文件夹,但是没有看到这种情况发生。是否有其他方法通过应用程序清理它,而不是诉诸某些cron工作?
答案 0 :(得分:0)
希望以下是明智的选择:
1)您可以每次创建唯一的文件夹,例如/ tmp / spark_checkpoint_1578032476801
2a)您可以只删除应用程序末尾的文件夹。
2b)如果使用HDFS进行检查点,则使用此类代码
def cleanFS(sc: SparkContext, fsPath: String) = {
val fs = org.apache.hadoop.fs.FileSystem.get(new URI(fsPath), sc.hadoopConfiguration)
fs.delete(new Path(fsPath), true)
}
答案 1 :(得分:0)