【问题标题】:How to check if HDFS directory is empty in Spark如何在 Spark 中检查 HDFS 目录是否为空
【发布时间】:2019-11-01 15:25:32
【问题描述】:

我正在使用org.apache.hadoop.fs 来检查HDFS 中的目录是否为空。我查找了 FileSystem api,但找不到任何接近它的东西。基本上我想检查目录是否为空或其中存在多少文件。

我能够找到“exists”方法,但这只能说明路径是否存在。

val hdfs = FileSystem.get(spark.sparkContext.hadoopConfiguration)
val containsFile = fs.exists(new Path(dataPath))

【问题讨论】:

    标签: api apache-spark hadoop hdfs


    【解决方案1】:

    您可以获取 ContentSummary 并检查文件或目录的计数

    ContentSummary cs = fileSystem.getContentSummary("path");
    long fileCount = cs.getFileCount();
    

    【讨论】:

    • 嗯,但是 ContentSummary 也有 getDirectoryCount 所以它最终可能不是空的
    • 应该使用 getFileAndDirectoryCount
    【解决方案2】:

    我会申请:

    1. listFiles() 来自FileSytem class,例如:

      FileSystem.get(sc.hadoopConfiguration()).listFiles(..., true)

    2. 从返回的对象RemoteIterator中询问是否有使用hasNext()方法的元素。

    【讨论】:

      【解决方案3】:

      复制粘贴解决方案

      FileSystem.get(sc.hadoopConfiguration()).listFiles(path, true).hasNext
      

      true 不为空,false 为空

      【讨论】:

        猜你喜欢
        • 2018-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-18
        • 1970-01-01
        • 2011-11-21
        • 2018-11-20
        • 1970-01-01
        相关资源
        最近更新 更多