You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Spark从HDFS路径中仅提取目录名称

获取HDFS目录下的子目录名称(而非完整路径)

嗨,我懂你现在的困扰——用Spark调用HDFS的FileSystem API时,输出的都是完整路径,却只想拿到最后那一级的目录名对吧?其实不用复杂操作,Path类本身就带了现成的方法能直接搞定~

你原来的代码是打印了完整的Path对象,所以输出的是全路径。只需要在getPath()后面加上getName()方法,就能提取出路径的最后一级名称了。修改后的代码如下:

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

运行这段代码后,你应该就能得到类似这样的输出:

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

另外,如果你的目标路径下同时存在文件和目录,只想保留目录名称的话,可以再加个过滤条件,确保只处理目录:

val fs = FileSystem.get(sc.hadoopConfiguration)
val ls = fs.listStatus(new Path("/user/rev/raw_data"))
// 过滤出目录后再提取名称
ls.filter(_.isDirectory).foreach(x => println(x.getPath.getName))

这样就只会输出你想要的子目录名称啦~

内容的提问来源于stack exchange,提问作者Prabhat Ratnala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:24:17