hadoop命令从hadoop中的目录获取最新的子目录名

vyswwuz2  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(456)

如何在hadoop中找到在目录中创建的最新子目录?e、 如果在hadoop中调用 mgm 它有两个子目录1和2,如下所示:

/user/mgm/1
/user/mgm/2

我想知道1或2中哪一个是最先创建的。

hadoop fs -ls -t /user/mgm/ | head -1

不适合我。上面写着 "illegal option -t"

bwntbbo3

bwntbbo31#

这个 -t 的选项 hdfs dfs -ls 是针对ApacheHadoop2.8.0的新特性,该特性尚未发布。这在jira发行的hadoop-8934中得到了追踪。我不知道为什么这个选项在 ls 已经有文件了。
同时,另一个选择是使用 hdfs dfs -stat 包含修改时间的格式字符串的命令。下面是一个示例,演示如何使用 hdfs dfs -stat 识别 dir2 作为最新修改时间的子目录。

> hdfs dfs -mkdir /user/mgm/dir1

> hdfs dfs -mkdir /user/mgm/dir2

> hdfs dfs -ls /user/mgm
Found 2 items
drwxr-xr-x   - chris supergroup          0 2015-12-31 14:38 /user/mgm/dir1
drwxr-xr-x   - chris supergroup          0 2015-12-31 14:38 /user/mgm/dir2

> hdfs dfs -help stat
-stat [format] <path> ... :
  Print statistics about the file/directory at <path>
  in the specified format. Format accepts filesize in
  blocks (%b), type (%F), group name of owner (%g),
  name (%n), block size (%o), replication (%r), user name
  of owner (%u), modification date (%y, %Y).
  %y shows UTC date as "yyyy-MM-dd HH:mm:ss" and
  %Y shows milliseconds since January 1, 1970 UTC.
  If the format is not specified, %y is used by default.

> hdfs dfs -stat '%y    %n' /user/mgm/*
2015-12-31 22:38:16    dir1
2015-12-31 22:38:19    dir2

> hdfs dfs -stat '%Y    %n' /user/mgm/*
1451601496198    dir1
1451601499150    dir2

> hdfs dfs -stat '%Y    %n' /user/mgm/* | sort -nr | head -1 | awk '{ print $NF }'
dir2

如何在hadoop中找到在目录中创建的最新子目录?
请记住,所有这些特性都参考修改时间,而不是创建时间。修改时间可以随着目录内容的更改而更新。如果你真的非常需要创建时间,那就要小心了。没有选项可用于将创建时间的可见性作为与修改时间分开跟踪的值。

相关问题