2017-08-08 134 views
0

我想从我的HDFS directories.I的一个最新的更新的文件夹是能够得到在HDFS文件系统的最新文件,但不知道如何做到这一点的HDFS one.I试图与外壳脚本。获取最新更新文件夹中的HDFS

+0

你是如何获得最新的文件?您也可以使用相同的脚本文件夹。 – daemon12

+0

hadoop的FS -ls -R/TMP /应用| awk -F“”'{print $ 6“”$ 7“”$ 8}'| sort -nr |头-1 |切-d”“-F3 –

+0

的答案部分解决方案是类似的。尝试一下,看看它是否有效。 – daemon12

回答

1

用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:只给出目录路径

例子:

[[email protected]]$ 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 

解决方案:

[[email protected]]$ hdfs dfs -ls -R /tmp/a | grep "^d" | sort -k6,7 | tail -1 | tr -s ' ' | cut -d' ' -f8 

/tmp/a/b/c/CC 
相关问题