Как подсчитать строки в файле по команде 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