Spark-Scala 检查点清理

Kas*_*pgv 5 scala apache-spark checkpointing

我正在“本地”模式下运行 Spark 应用程序。它正确检查点到 checkpointFolder 配置中定义的目录。但是,我发现有两个问题导致了一些磁盘空间问题。

1)由于我们有多个用户运行该应用程序,服务器上的检查点文件夹是由第一个执行该应用程序的用户创建的,这会导致其他用户由于操作系统权限问题而运行失败。有没有办法在 checkpointFolder 中提供相对路径,例如 checkpointFolder=~/spark/checkpoint?

2)我已使用spark.worker.cleanup.enabled=true配置在运行后清理检查点文件夹,但没有看到这种情况发生。是否有其他方法可以通过应用程序清理它,而不是诉诸某些 cron 作业?

Sta*_*vKo 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)
  }
Run Code Online (Sandbox Code Playgroud)