为什么没有'hadoop fs -head'hell命令?

bbe*_*ort 57 hadoop hdfs

在HDFS上检查文件的快速方法是使用tail:

~$ hadoop fs -tail /path/to/file
Run Code Online (Sandbox Code Playgroud)

这将显示文件中的最后一千字节数据,这非常有用.但是,相反的命令head似乎不是shell命令集合的一部分.我发现这非常令人惊讶.

我的假设是,由于HDFS是为非常大的文件上的非常快速的流读取而构建的,因此存在一些影响访问的问题head.这让我对做头脑的事情犹豫不决.有人有答案吗?

Chr*_*ite 132

我会说这是更多地与效率 - 一个头可以很容易地通过Linux head命令管道Hadoop的FS -cat的输出被复制.

hadoop fs -cat /path/to/file | head
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为在输出所需数量的行之后,head将关闭底层流

以这种方式使用tail会大大降低效率 - 因为您必须在整个文件(所有HDFS块)上流式传输以查找最终的x行数.

hadoop fs -cat /path/to/file | tail
Run Code Online (Sandbox Code Playgroud)

你注意到hadoop fs -tail命令在最后一个千字节上工作 - hadoop可以有效地找到最后一个块并跳到最后一个千字节的位置,然后流输出.通过尾部管道不能轻易做到这一点.


yis*_*aiz 6

从 3.1.0 版开始,我们现在有了它:

用法:hadoop fs -head URI

将文件的第一个 KB 显示到标准输出。

这里