Как подсчитать строки в файле по команде hdfs?
У меня есть файл на HDFS, который я хочу знать, сколько строк. (TestFile)
В linux я могу сделать:
wc -l <filename>
Можно ли сделать что-то подобное с командой "hadoop fs"? Я могу распечатать содержимое файла с помощью:
hadoop fs -text /user/mklein/testfile
Как узнать, сколько строк у меня есть? Я хочу избежать копирования файла в локальную файловую систему, а затем выполнить команду wc.
Примечание. Мой файл сжимается с помощью мгновенного сжатия, поэтому я должен использовать -text вместо -cat
Ответы
Ответ 1
Вы не можете сделать это с помощью команды hadoop fs
. Либо вы должны написать код mapreduce с логикой, объясненной в этом сообщении , или это поможет свинья script.
A = LOAD 'file' using PigStorage() as(...);
B = group A all;
cnt = foreach B generate COUNT(A);
У вас есть правильное расширение для вашего мгновенного файла, чтобы свиньи могли его обнаружить и прочитать.
Ответ 2
Общее количество файлов:
hadoop fs -ls/path/to/hdfs/* | wc -l
Общее количество строк:
hadoop fs -cat/путь/в/hdfs/* | wc -l
Ответ 3
1. Количество строк выходного файла mapper:
~] $hadoop fs -cat/user/cloudera/output/part-m-00000 | wc -l
2. Количество строк текста или любого другого файла в hdfs:
~] $hadoop fs -cat/user/cloudera/output/abc.txt | wc -l
3. Top (Header) 5 строк текста или любого другого файла на hdfs:
~] $hadoop fs -cat/user/cloudera/output/abc.txt | head -5
4. Внизу 10 строк текста или любого другого файла на hdfs:
~] $hadoop fs -cat/user/cloudera/output/abc.txt | хвост -10