以递归方式查找HDFS文件夹中的最大文件或子目录

时间:2015-05-21 01:19:10

标签: hadoop hdfs

我想以递归方式查找HDFS文件夹中的最大文件或子目录。是否有任何命令或脚本可供参考?

提前谢谢, 林

1 个答案:

答案 0 :(得分:1)

如果要查找max size:

的文件,请尝试使用此shell脚本
h1out="/path/to/out/file/hadoop-ls-out.txt"
a1out="/path/to/out/file/hadoop-awk-out.txt"
h1="`hadoop fs -lsr /usr > $h1out`"
a1="`awk '{print $5,$8}' $h1out > $a1out`"
a2="`awk 'BEGIN{first=1;}{if (first) { max = min = $1; first = 0; next;}if (max < $1) max=$1; if (min > $1) min=$1; }END { print max }' $a1out`"
g1="`grep -r $a2 $a1out`"
echo $g1

<强>说明

h1out是存储 hadoop fs -lsr 输出的文件路径

a1out是存储 awk 输出

的文件路径

h1/usr的HDFS路径中递归列出文件,并将其存储在h1out

a1打印h1out文件中的 filesize 文件名(带完整路径)并将其保存在a1out文件< / p>

a2 filesize 中找到 min max 值,但我只使用了max(因为你需要max)所以它仅显示最大文件大小

g1在文件$a2中搜索a1out的值并将其打印出来。此结果使用 max fileseize 打印 filesize 文件名

  

注意:如果您使用的是最新的hadoop版本,请将“ hadoop fs ”替换为“ hdfs dfs