我想从我的一个HDFS目录中获取最新的更新文件。代码应该基本上循环遍历目录和子目录,并获取带有文件名的最新文件路径。我能够在本地文件系统中获取最新文件,但不知道如何为HDFS执行此操作。
find /tmp/sdsa -type f -print0 | xargs -0 stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head
以上代码适用于本地文件系统。我可以从HDFS获取日期,时间和文件名,但如何使用这3个参数获取最新文件?
这是我尝试过的代码:
hadoop fs -ls -R /tmp/apps | awk -F" " '{print $6" "$7" "$8}'
任何帮助将不胜感激。
提前致谢。
答案 0 :(得分:14)
这个对我有用:
hadoop fs -ls -R /tmp/app | awk -F" " '{print $6" "$7" "$8}' | sort -nr | head -1 | cut -d" " -f3
输出是整个文件路径。
答案 1 :(得分:3)
这是命令:
hadoop fs -ls -R /user| awk -F" " '{print $6" "$7" "$8}'|sort -nr|head|cut -d" " -f3-
你自己的脚本已经足够好了。 Hadoop以YYYY-MM-DD HH24:MI:SS格式返回日期,因此您可以按字母顺序对它们进行排序。