我在HDFS上有一个文件,我想知道有多少行。 (testfile的)
在linux中,我可以这样做:
wc -l <filename>
我可以使用“hadoop fs”命令执行类似的操作吗?我可以用以下方式打印文件内容:
hadoop fs -text /user/mklein/testfile
我怎么知道我有多少行?我想避免将文件复制到本地文件系统,然后运行wc命令。
注意:我的文件使用snappy压缩进行压缩,这就是为什么我必须使用-text而不是-cat
答案 0 :(得分:66)
文件总数:
hadoop fs -ls /path/to/hdfs/* | wc -l
总行数:
hadoop fs -cat /path/to/hdfs/* | wc -l
给定文件的总行数:
hadoop fs -cat /path/to/hdfs/filename | wc -l
答案 1 :(得分:4)
使用hadoop fs
命令无法执行此操作。您必须使用此post中解释的逻辑编写mapreduce代码,否则此猪脚本会有所帮助。
A = LOAD 'file' using PigStorage() as(...);
B = group A all;
cnt = foreach B generate COUNT(A);
确保您的snappy文件具有正确的扩展名,以便猪可以检测并阅读它。
答案 2 :(得分:3)
映射器输出文件的行数:
~]$ hadoop fs -cat /user/cloudera/output/part-m-00000 | wc -l
hdfs上的文本行数或任何其他文件:
~]$ hadoop fs -cat /user/cloudera/output/abc.txt | wc -l
Top(Header)5行文本或hdfs上的任何其他文件:
~]$ hadoop fs -cat /user/cloudera/output/abc.txt | head -5
hdfs上的文本或任何其他文件的底部10行:
~]$ hadoop fs -cat /user/cloudera/output/abc.txt | tail -10