概述
@羲凡——只为了更好的活着
Scala列出hdfs目录下的文件
在最近的一个业务中需要列出hdfs上某个目录下的所有文件,再过滤出自己需要的文件,进行spark循环,在网上找到了篇博客非常有用,我稍微简化了一下,拿走不谢。
如果查看原博主文章点这里 https://blog.csdn.net/dkl12/article/details/84312307 尊重原博主。下面字节上代码:
package csdn
import java.net.URI
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{FileSystem, FileUtil, Path}
import scala.collection.mutable.ArrayBuffer
object SparkListHdfsFile {
def main(args: Array[String]): Unit = {
val path = "/aarontest/dqas"
//生成FileSystem
def getHdfs(path: String): FileSystem = {
val conf = new Configuration()
FileSystem.newInstance(URI.create(path), conf)
}
//获取目录下的一级文件和目录
def getFilesAndDirs(path: String): Array[Path] = {
val fs = getHdfs(path).listStatus(new Path(path))
FileUtil.stat2Paths(fs)
}
//获取目录下的一级文件
def getFiles(path: String): Array[String] = {
getFilesAndDirs(path).filter(getHdfs(path).getFileStatus(_).isFile())
.map(_.toString)
}
//获取目录下的一级目录
def getDirs(path: String): Array[String] = {
getFilesAndDirs(path).filter(getHdfs(path).getFileStatus(_).isDirectory)
.map(_.toString)
}
//获取目录下的所有文件
def getAllFiles(path: String): ArrayBuffer[String] = {
val arr = ArrayBuffer[String]()
val hdfs = getHdfs(path)
val getPath = getFilesAndDirs(path)
getPath.foreach(patha => {
if (hdfs.getFileStatus(patha).isFile())
arr += patha.toString
else {
arr ++= getAllFiles(patha.toString())
}
})
arr
}
println("获取目录下的一级文件和目录")
getFilesAndDirs(path).foreach(println)
println("获取目录下的一级文件")
getFiles(path).foreach(println)
println("获取目录下的一级目录")
getDirs(path).foreach(println)
println("获取目录下所有文件")
getAllFiles(path).foreach(println)
}
}
结果展示:
获取目录下的一级文件和目录
hdfs://ns/aarontest/dqas/SparkDqas.jar
hdfs://ns/aarontest/dqas/dqasToMysql.sh
hdfs://ns/aarontest/dqas/jsr166e-1.1.0.jar
hdfs://ns/aarontest/dqas/mysql-connector-java-5.1.38.jar
hdfs://ns/aarontest/dqas/spark-cassandra-connector_2.11-2.3.1.jar
hdfs://ns/aarontest/dqas/tmpData
获取目录下的一级文件
hdfs://ns/aarontest/dqas/SparkDqas.jar
hdfs://ns/aarontest/dqas/dqasToMysql.sh
hdfs://ns/aarontest/dqas/jsr166e-1.1.0.jar
hdfs://ns/aarontest/dqas/mysql-connector-java-5.1.38.jar
hdfs://ns/aarontest/dqas/spark-cassandra-connector_2.11-2.3.1.jar
获取目录下的一级目录
hdfs://ns/aarontest/dqas/tmpData
获取目录下所有文件
hdfs://ns/aarontest/dqas/SparkDqas.jar
hdfs://ns/aarontest/dqas/dqasToMysql.sh
hdfs://ns/aarontest/dqas/jsr166e-1.1.0.jar
hdfs://ns/aarontest/dqas/mysql-connector-java-5.1.38.jar
hdfs://ns/aarontest/dqas/spark-cassandra-connector_2.11-2.3.1.jar
hdfs://ns/aarontest/dqas/tmpData/_SUCCESS
hdfs://ns/aarontest/dqas/tmpData/part-00000-b681c97b-2e6953-c000.csv
====================================================================
@羲凡——只为了更好的活着
若对博客中有任何问题,欢迎留言交流
最后
以上就是奋斗板凳为你收集整理的Scala列出hdfs目录下的文件Scala列出hdfs目录下的文件的全部内容,希望文章能够帮你解决Scala列出hdfs目录下的文件Scala列出hdfs目录下的文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复