【问题标题】:How to get just directory name from HDFS如何从 HDFS 获取目录名称
【发布时间】:2018-03-20 16:14:32
【问题描述】:

我正在尝试使用 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://localhost/user/rev/raw_data/191622-140

hdfs://localhost/user/rev/raw_data/201025-001

hdfs://localhost/user/rev/raw_data/201025-002

hdfs://localhost/user/rev/raw_data/2065-5

hdfs://localhost/user/rev/raw_data/223575-002

我怎样才能得到如下的输出(即只是目录名)

191622-140

201025-001

201025-002

2065-5

223575-002

【问题讨论】:

  • 注意:从 HDFS 读取数据不需要 Spark

标签: scala apache-spark hdfs


【解决方案1】:

当您在使用status.getPath 时使用Path 对象时,您可以简单地对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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多