Hadoop fs -du-h按大小排序M,G,T,P,E,Z,Y

时间:2016-06-28 21:34:01

标签: bash shell hadoop hadoop2 hadoop-partitioning

我正在运行此命令 -

sudo -u hdfs hadoop fs -du -h /user | sort -nr 

并且输出没有按演出,Terabytes,gb

进行排序

我找到了这个命令 -

hdfs dfs -du -s /foo/bar/*tobedeleted | sort -r -k 1 -g | awk '{ suffix="KMGT"; for(i=0; $1>1024 && i < length(suffix); i++) $1/=1024; print int($1) substr(suffix, i, 1), $3; }' 

但似乎没有用。

是否有一种方法或命令行标志我可以使用它来排序和输出应该看起来像 -

123T  /xyz
124T  /xyd
126T  /vat
127G  /ayf
123G  /atd

请帮忙

问候 MAYUR

4 个答案:

答案 0 :(得分:0)

这是一个很老的问题,但是在尝试做同样的事情时偶然发现了它。当您提供-h(人类可读标志)时,它会将大小转换为不同的单位,以使人类更容易阅读。取消选中该标记,我们将获得文件长度的汇总摘要(以字节为单位)。

sudo -u hdfs hadoop fs -du -s '/*' | sort -nr

不易阅读,但意味着您可以正确对其进行排序。

有关更多详细信息,请参见https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/FileSystemShell.html#du

答案 1 :(得分:0)

hdfs dfs -du -h <PATH> | awk '{print $1$2,$3}' | sort -hr

简短说明:

  • hdfs命令获取输入数据。
  • awk仅显示前三个字段,并在第二和第三之间显示逗号。
  • -h的{​​{1}}比较人类可读的数字,例如sort2K,而4G则颠倒排序顺序。

答案 2 :(得分:0)

hdfs dfs -du -h <PATH> | sed 's/ //' | sort -hr

sed将删除数字和单位之间的空格,之后sort将能够理解它。

答案 3 :(得分:-1)

尝试按此排序hdfs dfs -ls -h /path sort -r -n -k 5

-rw-r--r-- 3 admin admin 108.5 M 2016-05-05 17:23 /user/admin/2008.csv.bz2 -rw-r--r-- 3 admin admin 3.1 M 2016-05-17 16:19 /user/admin/warand_peace.txt Found 11 items drwxr-xr-x - admin admin 0 2016-05-16 17:34 /user/admin/oozie-oozi drwxr-xr-x - admin admin 0 2016-05-16 16:35 /user/admin/Jars drwxr-xr-x - admin admin 0 2016-05-12 05:30 /user/admin/.Trash drwxrwxrwx - admin admin 0 2016-05-16 11:21 /user/admin/2015_11_21 drwxrwxrwx - admin admin 0 2016-05-16 11:21 /user/admin/2015_11_20 drwxrwxrwx - admin admin 0 2016-05-16 11:21 /user/admin/2015_11_19 drwxrwxrwx - admin admin 0 2016-05-16 11:21 /user/admin/2015_11_18 drwx------ - admin admin 0 2016-05-16 17:38 /user/admin/.staging