我想要我的一个 HDFS 目录中的最新更新文件夹。我能够在 hdfs 文件系统中获取最新文件,但不确定如何为 HDFS 文件系统执行此操作。我尝试使用 shell 脚本。
最佳答案
使用 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
关于bash - 获取 HDFS 中最后更新的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45564024/