我想从我的一个HDFS目录中获取最新的更新文件夹。我能够在hdfs文件系统中获取最新文件,但不知道如何为HDFS目录。我尝试使用shell脚本。
答案 0 :(得分:3)
使用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
:仅提供目录路径
示例:强>
[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