递归查找 HDFS 文件夹中的最大文件或子目录
recursively find max file or sub-directory in an HDFS folder
我想递归地查找 HDFS 文件夹中的最大文件或子目录。有没有什么命令或者脚本可以参考?
提前致谢,
林
试试这个 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 ,}' $h1out > $a1out`"
a2="`awk 'BEGIN{first=1;}{if (first) { max = min = ; first = 0; next;}if (max < ) max=; if (min > ) min=; }END { print max }' $a1out`"
g1="`grep -r $a2 $a1out`"
echo $g1
解释:
h1out
是存放的文件路径 hadoop fs -lsr output
a1out
是存储awk输出的文件路径
h1
在我的 HDFS 路径 /usr
中递归列出文件并将其存储在 h1out
中
a1
从 h1out
文件打印 filesize 和 filename (带完整路径)并保存在 a1out
个文件中
a2
从 filesize 中找到 min 和 max 值,但我只使用了最大值(因为你需要最大值)所以它只显示最大文件大小
g1
在文件 a1out
中搜索 $a2
的值并打印出来。此结果打印 filesize 和 filename 以及 max fileseize.
NOTE: If you are using latest hadoop version, replace "hadoop fs" with "hdfs dfs"
我想递归地查找 HDFS 文件夹中的最大文件或子目录。有没有什么命令或者脚本可以参考?
提前致谢, 林
试试这个 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 ,}' $h1out > $a1out`"
a2="`awk 'BEGIN{first=1;}{if (first) { max = min = ; first = 0; next;}if (max < ) max=; if (min > ) min=; }END { print max }' $a1out`"
g1="`grep -r $a2 $a1out`"
echo $g1
解释:
h1out
是存放的文件路径 hadoop fs -lsr output
a1out
是存储awk输出的文件路径
h1
在我的 HDFS 路径 /usr
中递归列出文件并将其存储在 h1out
a1
从 h1out
文件打印 filesize 和 filename (带完整路径)并保存在 a1out
个文件中
a2
从 filesize 中找到 min 和 max 值,但我只使用了最大值(因为你需要最大值)所以它只显示最大文件大小
g1
在文件 a1out
中搜索 $a2
的值并打印出来。此结果打印 filesize 和 filename 以及 max fileseize.
NOTE: If you are using latest hadoop version, replace "hadoop fs" with "hdfs dfs"