HDFSファイルのサイズを見つける方法は?HDFS内のファイルのサイズを見つけるために使用する必要があるコマンド。
7 に答える
私も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
ください。
コマンドを使用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バイトです。
以下の関数を使用して、ファイルサイズを取得しました。
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;
}
}
以下のコマンドと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
hdfs dfs -du -s -h /directory
これは人間が読める形式です。そうでない場合は、悪い単位になります(少し大きくなります)
APIを介して実行する場合は、「getFileStatus()」メソッドを使用できます。
ディレクトリ内の各ファイルのサイズを知りたい場合は、最後に「*」アスタリスクを使用してください。
hadoop fs -du -s -h /tmp/output/*
これがあなたの目的に役立つことを願っています。