我想要一个hdfs目录中最新更新的文件夹。我可以在hdfs文件系统中获取最新的文件,但不确定如何为hdfs one执行该操作。我尝试了shell脚本。
g6ll5ycj1#
使用hadoop 2.6,我可以使用以下命令使其工作:
hdfs dfs -ls -R ${DIR} | grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8
哪里, hdfs dfs -ls -R ${DIR} :递归地给出所有目录 grep "^d" :只提供目录 sort -k6,7 :按修改时间排序 tail -1 :列出上次修改的目录 tr -s ' ' :某些格式 cut -d' ' -f8 :只提供目录路径例子:
hdfs dfs -ls -R ${DIR}
grep "^d"
sort -k6,7
tail -1
tr -s ' '
cut -d' ' -f8
[user@nodeX]$ hdfs dfs -ls -R /tmp/a drwxr-xr-x - hduser supergroup 0 2017-08-08 03:08 /tmp/a/b drwxr-xr-x - hduser supergroup 0 2017-08-08 03:11 /tmp/a/b/c drwxr-xr-x - hduser supergroup 0 2017-08-08 03:12 /tmp/a/b/c/CC -rw-r--r-- 3 hduser supergroup 0 2017-08-08 03:12 /tmp/a/b/c/CC/f2.txt drwxr-xr-x - hduser supergroup 0 2017-08-08 03:08 /tmp/a/b/c/d drwxr-xr-x - hduser supergroup 0 2017-08-08 03:08 /tmp/a/b/c/d/e -rw-r--r-- 3 hduser supergroup 6 2017-08-08 03:10 /tmp/a/b/c/f1.txt
解决方案:
[user@nodeX]$ hdfs dfs -ls -R /tmp/a | grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8 /tmp/a/b/c/CC
1条答案
按热度按时间g6ll5ycj1#
使用hadoop 2.6,我可以使用以下命令使其工作:
哪里,
hdfs dfs -ls -R ${DIR}
:递归地给出所有目录grep "^d"
:只提供目录sort -k6,7
:按修改时间排序tail -1
:列出上次修改的目录tr -s ' '
:某些格式cut -d' ' -f8
:只提供目录路径例子:
解决方案: