删除beeline输出中的头文件

g52tjvyc  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(749)

我正在尝试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 )然后以表格形式显示数据。然而,我想消除这个问题,并得到类似hivecli的结果。

jgwigjjp

jgwigjjp1#

beeline有很多命令行选项。
在您的情况下,您可以使用:

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

vql8enpb2#

你可以用论点 --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的分隔符是tab。
当使用csv时,数据将如下所示

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

当使用tsv时

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

在使用csv或tsv时要小心,你总是会有一个单引号被值包围,而且你无法摆脱它,这在少数情况下可能会导致一些问题。
希望以上的详细解释能涵盖所有你想涵盖的可能案例。
有关更多说明,请访问apachebeeline wiki页面。干杯!!

相关问题