Hadoopでディレクトリのサイズを取得する方法


  1. FileStatusを使用する方法:

    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.FileStatus;
    import org.apache.hadoop.fs.Path;
    public class DirectorySizeExample {
    public static void main(String[] args) {
        try {
            Configuration conf = new Configuration();
            FileSystem fs = FileSystem.get(conf);
            Path directoryPath = new Path("hdfs://localhost:9000/path/to/directory");
            FileStatus[] fileStatuses = fs.listStatus(directoryPath);
            long totalSize = 0;
            for (FileStatus fileStatus : fileStatuses) {
                totalSize += fileStatus.getLen();
            }
            System.out.println("Directory size: " + totalSize + " bytes");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    }
  2. ContentSummaryを使用する方法:

    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.fs.ContentSummary;
    public class DirectorySizeExample {
    public static void main(String[] args) {
        try {
            Configuration conf = new Configuration();
            FileSystem fs = FileSystem.get(conf);
            Path directoryPath = new Path("hdfs://localhost:9000/path/to/directory");
            ContentSummary contentSummary = fs.getContentSummary(directoryPath);
            long totalSize = contentSummary.getLength();
            System.out.println("Directory size: " + totalSize + " bytes");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    }

上記の例では、HadoopのJava APIを使用してディレクトリのサイズを取得しています。hdfs://localhost:9000/path/to/directoryの部分を対象のディレクトリのパスに置き換えて使用してください。