检查hdfs上文件的一种快速方法是使用tail:
~$ hadoop fs -tail /path/to/file
这将显示文件中最后千字节的数据,这非常有用。然而,相反的命令 head 似乎不是shell命令集合的一部分。我觉得这很令人惊讶。我的假设是,由于hdfs是为在非常大的文件上进行非常快速的流式读取而构建的,因此有一些面向访问的问题会影响 head . 这让我很犹豫是否要做一些接近头部的事情。有人有答案吗?
head
xhv8bpkk1#
hdfs -dfs /path | head
是解决问题的好办法。
i2byvkas2#
在hadoop v2中:
hdfs dfs -cat /file/path|head
在hadoop v1和v3中:
hadoop fs -cat /file/path|head
wz1wpwve3#
您可以尝试以下命令
hadoop fs -cat /path | head -n
哪里 -n 可以替换为要查看的记录数
-n
0dxa2lsx4#
我想说的是,这更多地与效率有关——通过linux head命令将hadoop fs-cat的输出管道化,可以很容易地复制head。
hadoop fs -cat /path/to/file | head
这是有效的,因为在输出所需的行数之后,head将关闭底层流以这种方式使用tail的效率要低得多,因为您必须对整个文件(所有hdfs块)进行流式处理才能找到最终的x行数。
hadoop fs -cat /path/to/file | tail
正如您所注意到的,hadoop fs-tail命令适用于最后一个千字节—hadoop可以有效地找到最后一个块并跳到最后一个千字节的位置,然后流式输出。通过尾部的管道不容易做到这一点。
0pizxfdo5#
从3.1.0版开始,我们现在有了:用法:hadoopfs-headuri显示要标准输出的文件的第一个千字节。看这里。
5条答案
按热度按时间xhv8bpkk1#
是解决问题的好办法。
i2byvkas2#
在hadoop v2中:
在hadoop v1和v3中:
wz1wpwve3#
您可以尝试以下命令
哪里
-n
可以替换为要查看的记录数0dxa2lsx4#
我想说的是,这更多地与效率有关——通过linux head命令将hadoop fs-cat的输出管道化,可以很容易地复制head。
这是有效的,因为在输出所需的行数之后,head将关闭底层流
以这种方式使用tail的效率要低得多,因为您必须对整个文件(所有hdfs块)进行流式处理才能找到最终的x行数。
正如您所注意到的,hadoop fs-tail命令适用于最后一个千字节—hadoop可以有效地找到最后一个块并跳到最后一个千字节的位置,然后流式输出。通过尾部的管道不容易做到这一点。
0pizxfdo5#
从3.1.0版开始,我们现在有了:
用法:hadoopfs-headuri
显示要标准输出的文件的第一个千字节。
看这里。