我是靠谱客的博主 奋斗板凳,最近开发中收集的这篇文章主要介绍Scala列出hdfs目录下的文件Scala列出hdfs目录下的文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

@羲凡——只为了更好的活着

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目录下的文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部