Удалить заголовки в выводе в билайне

Я пытаюсь beeline cli запросить таблицу кустов и сохранить результат вывода как переменную. С помощью команды билайн:

beeline -u connection_string -n user_name -w password_file \
-e "select count(*) from db.table_name"

Используя эту команду, я получаю текущий результат вывода как:

+---------------+--+ 
| record_count  | 
+---------------+--+ 
| 80785         | 
+---------------+--+

Пока мне нужен результат как: Record count:80785

Другая команда, которую я использую:

beeline -u connection_string -n user_name -w password_file \
-e "select * from db.table_name;” > result.csv

Который снова отображает результат в табличном формате, разделенном |.

В основном beeline по умолчанию возвращает заголовок (table_name.column_name), а затем данные в табличном формате. Принимая во внимание, что я хочу устранить это и получить такие результаты, как Hive CLI.


person Sandeep Singh    schedule 27.12.2017    source источник


Ответы (2)


Вы можете использовать аргумент --showHeader=false --outputformat=tsv2, чтобы осветить это.

используя ЭТОТ ФОРМАТ, ВАША команда будет похожа на

beeline --showHeader=false --outputformat=tsv2 \
-u connection_string -n user_name -w password_file \
 -e "select count(*) from db.table_name"

Рассмотрите возможность использования tsv2

id  value   comment
1   Value1  Test comment 1
2   Value2  Test comment 2
3   Value3  Test comment 3

Если используется dsv (разделитель |)

id|value|comment
1|Value1|Test comment 1
2|Value2|Test comment 2
3|Value3|Test comment 3

Ваши данные будут выглядеть так. Помните, что эти три активируются с одинарными кавычками вокруг значения, если значения имеют специальный символ или новую строку внутри. Цитирование можно отключить, установив для параметра disable.quoting.for.sv значение true.

ЕЩЕ ВАРИАНТЫ С ИСПОЛЬЗОВАНИЕМ CSV И TSV

csv, tsv Эти два формата отличаются только разделителем между значениями, которым является запятая для csv и табуляция для tsv.

при использовании csv данные будут выглядеть так

'id','value','comment'
'1','Value1','Test comment 1'
'2','Value2','Test comment 2'
'3','Value3','Test comment 3'

А когда используется цв, то

'id'    'value' 'comment'
'1' 'Value1'    'Test comment 1'
'2' 'Value2'    'Test comment 2'
'3' 'Value3'    'Test comment 3'

Просто будьте осторожны при использовании csv или tsv, у вас всегда будет одинарная кавычка, окруженная значением, и вы не сможете избавиться от нее, что в некоторых случаях может привести к некоторым проблемам.

Надеюсь, что приведенное выше подробное объяснение охватит все возможные случаи, которые вы хотели охватить.

Для получения дополнительной информации посетите страницу Apache Beeline Wiki. ваше здоровье!!

person Indrajeet Gour    schedule 27.12.2017
comment
Не могли бы вы объяснить, что означает tsv2 , и преимущества его использования. - person Sandeep Singh; 27.12.2017
comment
Здесь count - только пример, мне нужно решение, которое можно использовать во всех запросах на выборку. - person Sandeep Singh; 27.12.2017
comment
@SandeepSingh Я обновил свой ответ, вы можете оформить заказ сейчас. - person Indrajeet Gour; 27.12.2017
comment
@SandeepSingh tsv дает 'col1' 'col2' 'col3' ..., тогда как tsv2 дает col1 col2 col3 ... (представьте, что мои пробелы на самом деле являются символами TAB!). ... Итак, tsv2 - это то, что большинство разработчиков считают правильным форматом значений, разделенных табуляцией. - person DouglasDD; 04.06.2021

У Билайн есть набор параметров командной строки.

В вашем случае вы можете использовать:

beeline --outputformat=dsv --showheader=false \
-e "select count(*) from db_name.table_name"
person philantrovert    schedule 27.12.2017
comment
Не могли бы вы объяснить dsv расшифровку и преимущества использования этого - person Sandeep Singh; 27.12.2017
comment
dsv обозначает значение, разделенное разделителем, и в вашем случае оно не имеет особого преимущества, за исключением того факта, что оно подавляет табличную структуру, которую beeline печатает с дефисами и плюсом => +-----+ - person philantrovert; 27.12.2017