第一种方式
import org.apache.hadoop.fs.FileSystem
import org.apache.hadoop.fs.Path
import org.apache.hadoop.conf.Configuration
//这里的uri表示NameNode访问地址和端口
val hdfs= FileSystem.get(new java.net.URI("hdfs://NameNodeAddress:8020"),new Configuration())
//这里的路径表示hdfs路径。
val dstPath = "/data/test/work/compress/"
if(hdfs.exists(new Path(dstPath))){
println("delete exits files")
hdfs.delete(new Path(dstPath),true)
}
该方式存在Hdfs主备切换之后上述删除操作无效的情况。
第二种方式
import org.apache.hadoop.fs.FileSystem
import org.apache.hadoop.fs.Path
val hadoopConf = sc.hadoopConfiguration
val hdfs = org.apache.hadoop.fs.FileSystem.get(hadoopConf)
val dstPath = "/data/test/work/compress/"
if(hdfs.exists(new Path(dstPath))){
println("delete exits files")
hdfs.delete(new Path(dstPath),true)
}
···
第二种方式避免了第一种方式存在的问题,推荐使用。