获取HDFS中最后更新的文件夹

时间:2017-08-08 09:05:48

标签: bash shell unix hadoop hdfs

我想从我的一个HDFS目录中获取最新的更新文件夹。我能够在hdfs文件系统中获取最新文件,但不知道如何为HDFS目录。我尝试使用shell脚本。

1 个答案:

答案 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