检查 HDFS 上文件的快速方法是使用 tail :
~$ hadoop fs -tail /path/to/file
这会显示文件中最后千字节的数据,这非常有用。但是,相反的命令 head
似乎不是 shell 命令集合的一部分。我觉得这非常令人惊讶。
我的假设是,由于 HDFS 是为对非常大的文件进行非常快速的流式读取而构建的,因此存在一些影响 head
的面向访问的问题。这让我犹豫要不要做一些事情来访问头部。有人有答案吗?
最佳答案
我想说这更多地与效率有关 - 可以通过 linux head 命令将 hadoop fs -cat 的输出通过管道传输来轻松复制 head。
hadoop fs -cat /path/to/file | head
这是有效的,因为 head 将在输出所需行数后关闭底层流
以这种方式使用 tail 的效率会大大降低 - 因为您必须遍历整个文件(所有 HDFS block )才能找到最终的 x 行数。
hadoop fs -cat /path/to/file | tail
您注意到的 hadoop fs -tail 命令适用于最后一个千字节 - hadoop 可以有效地找到最后一个 block 并跳到最后一个千字节的位置,然后流式传输输出。通过尾部管道无法轻松做到这一点。
关于hadoop - 为什么没有 'hadoop fs -head' shell 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19778137/