Sandeep Singh
Sandeep Singh

Reputation: 8010

Remove headers in output in beeline

I am trying beeline cli to query hive table and store output result as variable. Using beeline command:

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

Using this command, I getting the current output result as:

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

While I need result as: Record count:80785

Another command I am using is:

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

Which again displaying result in tabular format data separated by |.

Basically beeline, by default, is returning the header( table_name.column_name) then the data in tabular format. Whereas, I want to eliminate this and get results like hive CLI.

Upvotes: 3

Views: 8504

Answers (2)

Indrajeet Gour
Indrajeet Gour

Reputation: 4510

You can use argument --showHeader=false --outputformat=tsv2 to illuminate this.

using THIS FORMAT YOUR command will be like

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

Consider If tsv2 used

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

If dsv used (the delimiter is |)

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

Your data will look like this. Do remember these three are enabled with single quotes around the value if values are having special char or new line within. Quoting can be disabled by setting the disable.quoting.for.sv to true.

SOME MORE OPTION USING CSV AND TSV

csv, tsv These two formats differ only with the delimiter between values, which is comma for csv and tab for tsv.

when csv is used, data will look like this

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

And when tsv is used, then

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

Just beware while using csv or tsv, you will have single quote surrounded by value always and you can not get rid of it, which could lead to some problem in few cases.

Hope the above details explanation would cover all the possible cases you wanted to cover.

For more explanation visit the Apache Beeline Wiki page. cheers!!

Upvotes: 7

philantrovert
philantrovert

Reputation: 10092

Beeline has a bunch of command line options.

In your case, you can use :

beeline --outputformat=dsv --showheader=false \
-e "select count(*) from db_name.table_name"

Upvotes: 1

Related Questions