Apache Spark 如何解决错误的FS:hdfs:/...,应为:file:///以取得路径(String)的子目录清单?

46scxncf  于 2022-11-25  发布在  Apache
关注(0)|答案(1)|浏览(83)

我试图获得在我的目录“DWP”中创建的最新子目录名称。
我设法用本地路径执行此代码,但在我的hdfs集群中运行它时,我会出现错误“错误的FS:hdfs:/...,应为:文件:///”

def lastDirectoryHour(): String = {
  val env = System.getenv("IP_HDFS")
  val currentDate = DateTimeFormatter.ofPattern("YYYY-MM-dd").format(java.time.LocalDate.now)
  val readingPath = "hdfs://".concat(env).concat(":9000/user/bronze/json/DWP/").concat(currentDate).concat("/")
  val fs = FileSystem.get(new Configuration())
  val status = fs.listStatus(new Path(readingPath))
  var listDir = ListBuffer[Long]()
  var DirName: String = ""
  for(value<-status)
  {
    listDir = listDir += value.getModificationTime
  }
  for(value<-status)
  {
    if(value.getModificationTime == listDir.max) {
      DirName = value.getPath.getName
    }
  }
  readingPath.concat(DirName)
}

当我添加“addRessource”时,我无法使用返回名称的“listStatus”。您知道如何修改代码,使其返回最新的子目录名称吗?
非常感谢你提前。

67up9zun

67up9zun1#

你需要在你的配置对象中设置fs.defaultFS的值作为namenode的地址。最有可能的是在你的阅读路径中直到9000。
第二个选项可以是.从路径获取文件系统,

Filesystem fs = new Path(readingPath).getFileSystem(new Configuration())

相关问题