我想以递归方式查找HDFS文件夹中的最大文件或子目录。是否有任何命令或脚本可供参考?
提前谢谢, 林答案 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 ”