为什么没有'hadoop fs -head'shell命令?
检查HDFS文件的一种快速方法是使用tail :
~$ hadoop fs -tail /path/to/file
这将显示文件中最后一个千字节的数据,这非常有帮助。 但是,相反的命令head
似乎并不是shell命令集合的一部分。 我觉得这很令人惊讶。
我的假设是,由于HDFS是为在非常大的文件上进行非常快速的stream式读取而构build的,因此存在一些影响head
访问导向问题。 这让我犹豫不决,去做头脑。 有没有人有答案?
我想说的更多的是与效率有关 – 通过linux head命令将hadoop fs -cat的输出pipe道化,可以轻松地复制头部。
hadoop fs -cat /path/to/file | head
这是有效的,因为在输出所需数量的行之后,磁头将closures基础stream
以这种方式使用尾部将会大大降低效率,因为您必须遍历整个文件(所有HDFS块)才能find最后的x行。
hadoop fs -cat /path/to/file | tail
您注意到hadoop fs -tail命令在最后一个kilobyte上工作 – hadoop可以高效地find最后一个块并跳到最后一个kilobyte的位置,然后stream式输出。 通过尾巴pipe道不能轻易做到这一点。
hdfs -dfs /path | head
是解决问题的好方法。
你可以尝试下面的命令
hadoop fs -cat /path | head -n
其中-n
可以replace为要查看的logging数