head”shell命令?

rn0zuynd  于 2021-06-03  发布在  Hadoop
关注(0)|答案(5)|浏览(424)

检查hdfs上文件的一种快速方法是使用tail:

~$ hadoop fs -tail /path/to/file

这将显示文件中最后千字节的数据,这非常有用。然而,相反的命令 head 似乎不是shell命令集合的一部分。我觉得这很令人惊讶。
我的假设是,由于hdfs是为在非常大的文件上进行非常快速的流式读取而构建的,因此有一些面向访问的问题会影响 head . 这让我很犹豫是否要做一些接近头部的事情。有人有答案吗?

xhv8bpkk

xhv8bpkk1#

hdfs -dfs /path | head

是解决问题的好办法。

i2byvkas

i2byvkas2#

在hadoop v2中:

hdfs dfs -cat /file/path|head

在hadoop v1和v3中:

hadoop fs -cat /file/path|head
wz1wpwve

wz1wpwve3#

您可以尝试以下命令

hadoop fs -cat /path | head -n

哪里 -n 可以替换为要查看的记录数

0dxa2lsx

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可以有效地找到最后一个块并跳到最后一个千字节的位置,然后流式输出。通过尾部的管道不容易做到这一点。

0pizxfdo

0pizxfdo5#

从3.1.0版开始,我们现在有了:
用法:hadoopfs-headuri
显示要标准输出的文件的第一个千字节。
看这里。

相关问题