整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

HDFS ls命令按照时间排序(sort by time)

hadoop 小小明 24℃ 0评论

我们在使用HDFS Shell的时候只用最频繁的命令可能就是 ls 了,其具体含义我就不介绍了。在使用 ls 的命令时,我们可能想对展示出来的文件按照修改时间排序,也就是最近修改的文件(most recent)显示在最前面。如果你使用的是Hadoop 2.8.0以下版本,内置是不支持按照时间等属性排序的。不过值得高兴的是,我们可以结合Shell命令来实现按照文件最近修改的时间对 ls 命令输出结果进行排序;比如,我想按照最近修改的时间升序排序(也就是越早修改的文件显示在最上面),可以如下实现:

[iteblog@www.iteblog.com ~]$ hadoop fs -ls /user/iteblog | sort -k6,7
drwxr-xr-x   - iteblog iteblog          0 2015-06-16 14:57 /user/iteblog/hive
drwxr-xr-x   - iteblog iteblog          0 2016-07-04 16:16 /user/iteblog/spark
drwxr-xr-x   - iteblog iteblog          0 2016-11-16 20:07 /user/iteblog/data
drwxr-xr-x   - iteblog iteblog          0 2016-12-12 18:59 /user/iteblog/logs
drwxr-xr-x   - iteblog iteblog          0 2017-02-17 02:40 /user/iteblog/temp
drwxr-xr-x   - iteblog iteblog          0 2017-02-18 19:22 /user/iteblog/.sparkStaging
drwx------   - iteblog iteblog          0 2017-02-18 20:11 /user/iteblog/.Trash

如果你想按照最近修改的时间降序排序(也就是越早修改的文件显示在最下面),可以如下实现:

[iteblog@www.iteblog.com ~]$ hadoop fs -ls /user/iteblog | sort -r -k6,7
drwx------   - iteblog iteblog          0 2017-02-18 20:11 /user/iteblog/.Trash
drwxr-xr-x   - iteblog iteblog          0 2017-02-18 19:22 /user/iteblog/.sparkStaging
drwxr-xr-x   - iteblog iteblog          0 2017-02-17 02:40 /user/iteblog/temp
drwxr-xr-x   - iteblog iteblog          0 2016-12-12 18:59 /user/iteblog/logs
drwxr-xr-x   - iteblog iteblog          0 2016-11-16 20:07 /user/iteblog/data
drwxr-xr-x   - iteblog iteblog          0 2016-07-04 16:16 /user/iteblog/spark
drwxr-xr-x   - iteblog iteblog          0 2015-06-16 14:57 /user/iteblog/hive

如果你使用的是Hadoop 2.8.0及以上版本,我们可以发现Hadoop内置(HADOOP-8934)就支持了这个功能,如下:

Usage: hadoop fs -ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] <args>
Options:
-C: Display the paths of files and directories only.
-d: Directories are listed as plain files.
-h: Format file sizes in a human-readable fashion (eg 64.0m instead of 67108864).
-q: Print ? instead of non-printable characters.
-R: Recursively list subdirectories encountered.
-t: Sort output by modification time (most recent first).
-S: Sort output by file size.
-r: Reverse the sort order.
-u: Use access time rather than modification time for display and sorting.

可以从上面 ls 参数列表看出,最新版的Hadoop ls 命令支持了更多的功能,不仅仅是文件按照修改时间排序(包括升序和降序),还可以按照文件大小排序等。所以我们可以直接在命令行上使用这个功能:

[iteblog@www.iteblog.com ~]$ hadoop fs -ls -t /user/iteblog
drwx------   - iteblog iteblog          0 2017-02-18 20:11 /user/iteblog/.Trash
drwxr-xr-x   - iteblog iteblog          0 2017-02-18 19:22 /user/iteblog/.sparkStaging
drwxr-xr-x   - iteblog iteblog          0 2017-02-17 02:40 /user/iteblog/temp
drwxr-xr-x   - iteblog iteblog          0 2016-12-12 18:59 /user/iteblog/logs
drwxr-xr-x   - iteblog iteblog          0 2016-11-16 20:07 /user/iteblog/data
drwxr-xr-x   - iteblog iteblog          0 2016-07-04 16:16 /user/iteblog/spark
drwxr-xr-x   - iteblog iteblog          0 2015-06-16 14:57 /user/iteblog/hive

hadoop fs -ls -t -r /user/iteblog输出的结果正好和上面相反。

有些用户可能会说,你不是说这个功能是从Hadoop 2.8.0版本开始才支持的,但是为什么我在Hadoop 2.7.1的官方文档看到了有关 ls 支持 -t 参数的说明呢?如下:

Usage: hadoop fs -ls [-d] [-h] [-R] [-t] [-S] [-r] [-u] <args>
Options:
-d: Directories are listed as plain files.
-h: Format file sizes in a human-readable fashion (eg 64.0m instead of 67108864).
-R: Recursively list subdirectories encountered.
-t: Sort output by modification time (most recent first).
-S: Sort output by file size.
-r: Reverse the sort order.
-u: Use access time rather than modification time for display and sorting.

转载请注明:全栈大数据 » HDFS ls命令按照时间排序(sort by time)

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址