2015-11-11 3 views
0

Я пытаюсь подсчитать количество строк в файле в hdfs/HIVE. Есть некоторые случаи, когда я хочу, чтобы количество строк всей таблицы находилось в HIVE, а в некоторых случаях я хочу, чтобы количество строк только в файле в HIVE.Как подсчитать количество строк файла hdfs?

Я пробовал такие вещи, как !hadoop fs -count /<path to file(s)/, но это дает только FILE COUNT, затем CONTENT_SIZE. от here

Как получить количество линий?

ответ

1

Улей не позволит создавать таблицы поверх всего файла. Помните, что при создании таблицы в Hive вы создаете ее поверх папки. (что позволяет нам добавлять больше файлов)

Существует только способ прочитать только один файл в таблице в улье.

загрузить данные [local] inpath '/input_folder/input_file.txt' в таблицу dest_table;

Для того, чтобы подсчитать количество строк в этой таблице

SELECT COUNT (*) с dest_table;

Ссылка ниже, имеет некоторую полезную информацию:

How to load a text file into a Hive table stored as sequence files

+1

Я не большой поклонник такого подхода, так как для этого требуется создать таблицу Hive только для подсчета строк, что является довольно большим побочным эффектом. Я склоняюсь к использованию Свинья в соответствии с лучшим ответом http://stackoverflow.com/questions/32612867/how-to-count-lines-in-a-file-on-hdfs-command, поскольку это не требует любое временное хранилище, которое необходимо создать, или для данных, которые нужно скопировать в любом месте. –

+0

Согласен Бен .. но он хочет использовать только один файл, и поэтому я предложил этот подход. – hadooper

2

Если вы хотите узнать общее количество строк можно проверить «Map Input Records» счетчик. Это даст вам общее количество строк на данном входе (это все файлы в каталоге).

Если вам нужно количество строк в данном файле (я все еще не понимаю, зачем вам это нужно), вам нужно получить тот же счетчик для картографа, который прочитал данный файл. Это может немного запутаться, но это выполнимо.

Если вы используете Hadoop over Yarn, я бы посоветовал использовать Yarn's REST API, он очень прост в использовании и очень удобен для выполнения таких «быстрых запросов» по ​​некоторым частям обработки M/R.

Смежные вопросы