如何从HDFS获取目录名称

时间:2018-03-19 22:02:23

标签: scala apache-spark hdfs

我正在尝试使用spark从hdfs位置获取目录名称。我正在获取目录的整个路径,而不仅仅是目录名。

val fs = FileSystem.get(sc.hadoopConfiguration)
val ls = fs.listStatus(new Path("/user/rev/raw_data"))
ls.foreach(x => println(x.getPath))

这给了我

  

HDFS://本地主机/用户/转/ raw_data / 191622-140

     

HDFS://本地主机/用户/转/ raw_data / 201025-001

     

HDFS://本地主机/用户/转/ raw_data / 201025-002

     

HDFS://本地主机/用户/转/ raw_data / 2065-5

     

HDFS://本地主机/用户/转/ raw_data / 223575-002

如何获得如下输出(即只是目录名称)

  

191622-140

     

201025-001

     

201025-002

     

2065-5

     

223575-002

1 个答案:

答案 0 :(得分:2)

在使用Path时使用status.getPath个对象时,您可以在Path个对象上使用getName函数:

FileSystem
  .get(sc.hadoopConfiguration)
  .listStatus(new Path("/user/rev/raw_data"))
  .filterNot(_.isFile)
  .foreach(status => println(status.getPath.getName))

会打印:

191622-140
201025-001
201025-002
2065-5
223575-002