当前位置: 首页 > 知识库问答 >
问题:

如何删除所有文件从hdfs目录与scala

羊舌庆
2023-03-14

对于我目前正在使用Scala和Spark进行的一个项目,我必须编写一个代码来检查我正在处理的hdfs目录是否为空,如果不是,我必须从该目录中删除所有文件。

在我将代码部署到Azur之前,我正在使用计算机中的本地目录对其进行测试

我从以下内容开始:创建一个方法来删除这个目录中的每个文件。这就是我现在所拥有的:

object DirectoryCleaner {


  val spark:SparkSession = SparkSession.builder()
    .master("local[3]")
    .appName("SparkByExamples.com")
    .getOrCreate()

  val fs = FileSystem.get(spark.sparkContext.hadoopConfiguration)
  val srcPath=new Path("C:\\Users\\myuser\\Desktop\\test_dir\\file1.csv")

  def deleFilesDir(): Unit = {
    if(fs.exists(srcPath) && fs.isFile(srcPath))
      fs.delete(srcPath, true)
  }


}

有了这段代码,我可以删除单个文件(file1.csv)。我希望能够这样定义我的路径val srcPath=new path(“C:\\Users\\myuser\\Desktop\\test_dir”)(不指定任何文件名),只需从test_dir目录中删除所有文件。你知道我该怎么做吗?

谢谢你的帮助

共有1个答案

舒浩邈
2023-03-14

使用fs。listFiles获取目录中的所有文件,然后在删除它们时循环浏览它们。另外,将recursive标志设置为false,这样就不会递归到目录中。

import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{FileSystem, Path}

def deleteAllFiles(directoryPath: String, fs: FileSystem): Unit = {

  val path = new Path(directoryPath)

  // get all files in directory
  val files = fs.listFiles(path, false)

  // print and delete all files
  while (files.hasNext) {
    val file = files.next()
    fs.delete(file.getPath, false)
  }

}

val directoryPath = "/Users/m_vemuri/project"
val fs = FileSystem.get(new Configuration())
deleteAllFiles(directoryPath, fs)
 类似资料:
  • 我的应用程序将txt文件存储在FTP服务器上,该服务器也托管在WebService上。 但是,即使该目录中有txt文件,FTP重置是:

  • 问题内容: 我想删除目录中带有扩展名的所有文件。如何在Python中做到这一点? 问题答案: 通过和: 仅使用一个循环: 或通过: 确保位于正确的目录中,并最终使用。

  • 问题内容: 我在应用程序中拥有的导出工具的任务之一是清除应用程序目录树中的所有目录。我正在Linux外壳中寻找一个递归命令,该命令将遍历整个树并删除文件。 我没有使用export,因为此脚本将用于与SVN不相关的其他文件/目录名称。我尝试了类似的东西: 没用… 问题答案: 尝试这个: 在运行这样的命令之前,我经常喜欢先运行以下命令:

  • 我有一个目录,它是在执行应用程序后创建的。在使用应用程序的过程中,它充满了一些图片,这些图片是ComboBox的ItemsSource。在关闭应用程序之前,我试图通过设置new()或NULL来清除ItemsSource并删除该目录。如果目录为空,则会正常删除。但除此之外——什么都没有发生,也没有例外。我做错了什么? 创建目录并将路径值分配给“FeedBackScreenshotsPath” 删除

  • 本文向大家介绍Java删除文件、目录及目录下所有文件的方法实例,包括了Java删除文件、目录及目录下所有文件的方法实例的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要实现的功能是删除某个目录及目录下的所有子目录和文件,涉及到的知识点:File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除。 具体代码示例如下: 总结 以上就是这篇

  • 我是Camel的新手,正在探索使用Camel从特定目录删除文件的方法。我想知道基于过滤器从目录中删除文件的不同方法,如删除所有。txt文件或删除20天内未修改的文件等。