检查HDFS上文件的快速方法是使用tail:
~$ hadoop fs -tail /path/to/file
这将显示文件中的最后一千字节数据,这非常有用。但是,相反的命令head
似乎不是shell命令集合的一部分。我发现这非常令人惊讶。
我的假设是,由于HDFS是针对非常大的文件进行非常快速的流式读取而构建的,因此存在一些影响head
的面向访问的问题。这让我对做头脑的事情犹豫不决。有人有答案吗?
答案 0 :(得分:127)
我认为这更多地与效率有关 - 通过linux头命令管道输出hadoop fs -cat可以轻松复制头部。
hadoop fs -cat /path/to/file | head
这是有效的,因为在输出所需数量的行之后,head将关闭基础流
以这种方式使用tail会大大降低效率 - 因为你必须在整个文件(所有HDFS块)上流式传输以找到最终的x行数。
hadoop fs -cat /path/to/file | tail
你注意到的hadoop fs -tail命令在最后一个千字节上工作 - hadoop可以有效地找到最后一个块并跳到最后一个千字节的位置,然后流输出。通过尾部管道不能轻易做到这一点。
答案 1 :(得分:1)
hdfs -dfs /path | head
是解决问题的好方法。
答案 2 :(得分:1)
您可以尝试以下命令
hadoop fs -cat /path | head -n
其中-n
可以替换为要查看的记录数
答案 3 :(得分:1)
在Hadoop v2中:
hdfs dfs -cat /file/path|head
在Hadoop v1和v3中:
hadoop fs -cat /file/path|head
答案 4 :(得分:1)