35

HDFSファイルのサイズを見つける方法は?HDFS内のファイルのサイズを見つけるために使用する必要があるコマンド。

4

7 に答える 7

33

私もhadoop fs -dus <path>たくさん使っていることに気づきます。たとえば、「/ user / frylock / input」という名前のHDFS上のディレクトリに100個のファイルが含まれていて、実行できるすべてのファイルの合計サイズが必要な場合は、次のようになります。

hadoop fs -dus /user/frylock/input

そして、「/ user / frylock / input」ディレクトリ内のすべてのファイルの合計サイズ(バイト単位)を取得します。

hadoop fs -lsまた、HDFSはデータを冗長的に保存するため、ファイルによって使用される実際の物理ストレージは、およびによって報告されるものの3倍以上になる可能性があることに注意してhadoop fs -dusください。

于 2012-07-20T10:25:10.440 に答える
22

コマンドを使用hadoop fs -lsして、現在のディレクトリ内のファイルとその詳細を一覧表示できます。コマンド出力の5番目の列には、ファイルサイズ(バイト単位)が含まれています。

たとえば、コマンドhadoop fs -ls inputは次の出力を提供します。

Found 1 items
-rw-r--r--   1 hduser supergroup      45956 2012-07-19 20:57 /user/hduser/input/sou

ファイルのサイズsouは45956バイトです。

于 2012-07-20T08:12:30.370 に答える
15

以下の関数を使用して、ファイルサイズを取得しました。

public class GetflStatus
{
    public long getflSize(String args) throws IOException, FileNotFoundException
    {
        Configuration config = new Configuration();
        Path path = new Path(args);
        FileSystem hdfs = path.getFileSystem(config);
        ContentSummary cSummary = hdfs.getContentSummary(path);
        long length = cSummary.getLength();
        return length;
    }
}
于 2014-03-18T16:31:24.417 に答える
9

以下のコマンドとawkスクリプトを参照して、HDFSでフィルター処理された出力のサイズ(GB単位)を確認してください。

hadoop fs -du -s /data/ClientDataNew/**A***  | awk '{s+=$1} END {printf "%.3fGB\n", s/1000000000}'

出力--->2.089GB

hadoop fs -du -s /data/ClientDataNew/**B***  | awk '{s+=$1} END {printf "%.3fG\n", s/1000000000}'

出力--->1.724GB

hadoop fs -du -s /data/ClientDataNew/**C***  | awk '{s+=$1} END {printf  "%.3fG\n", s/1000000000}'

出力--->0.986GB

于 2016-05-10T14:44:59.083 に答える
4
hdfs dfs -du -s -h /directory

これは人間が読める形式です。そうでない場合は、悪い単位になります(少し大きくなります)

于 2019-02-05T19:31:00.833 に答える
2

APIを介して実行する場合は、「getFileStatus()」メソッドを使用できます。

于 2012-07-20T12:13:59.140 に答える
0

ディレクトリ内の各ファイルのサイズを知りたい場合は、最後に「*」アスタリスクを使用してください。

hadoop fs -du -s -h /tmp/output/*

これがあなたの目的に役立つことを願っています。

于 2021-08-31T08:52:04.310 に答える