web-dev-qa-db-ja.com

HDFSファイルのサイズを見つける方法

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

28
priya

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バイトです。

20
abhinavkulkarni

また、hadoop fs -dus <path>を非常に多く使用しています。たとえば、「/ user/frylock/input」という名前のHDFS上のディレクトリに100個のファイルが含まれており、実行できるすべてのファイルの合計サイズが必要な場合:

hadoop fs -dus /user/frylock/input

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

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

31
Paul M

ファイルサイズを取得するのに役立つ以下の関数を使用しました。

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;
    }
}
12
user3315248

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

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

7
Eddy Joseph

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

2
Tariq
hdfs dfs -du -s -h /directory

これは人間が読めるバージョンです。それ以外の場合は、悪い単位で与えられます(わずかに大きい)

1
Jason