Spark如何删除rdd checkpoint

spark | 2021-05-13 11:13:03

spark设置checkpoint路径

spark.sparkContext().setCheckpointDir("hdfs://nameservice1/xx/xx");

最终会把rdd的数据文件放在hdfs,

长此以往,这些无效数据,肯定会占满磁盘

所以有对应的清理checkpint配置

spark.cleaner.referenceTracking.cleanCheckpoints = 默认false

但是spark.cleaner.referenceTracking.cleanCheckpoints,也不能意味着一定能回收,因为垃圾回收并非一定会在合适的时间执行,有可能最终也没有触发弱引用清理任务逻辑

解决方法

所以最后还是在任务结束后再删除最好


def remove(filePath:String): Unit ={
    val path=new Path(filePath)
    val hdfs=FileSystem.get(Env.SPARK.sparkContext.hadoopConfiguration)
    if(hdfs.exists(path)){
      hdfs.delete(path,true)
    }
}

def main(args: Array[String]): Unit = {
	try {
	 
	} catch {
	  case e: Throwable =>
		
		throw e

	} finally {
	  HdfsService.remove(Env.SPARK.sparkContext.getCheckpointDir.get)
	  logger.info("执行耗时: {} ms", end - start)
	}

}

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号