San*_*ngh 2 hadoop hive hadoop2 beeline
我正在尝试 beeline cli 查询配置单元表并将输出结果存储为变量。使用 beeline 命令:
beeline -u connection_string -n user_name -w password_file \
-e "select count(*) from db.table_name"
Run Code Online (Sandbox Code Playgroud)
使用这个命令,我得到当前的输出结果为:
+---------------+--+
| record_count |
+---------------+--+
| 80785 |
+---------------+--+
Run Code Online (Sandbox Code Playgroud)
虽然我需要结果为: Record count:80785
我正在使用的另一个命令是:
beeline -u connection_string -n user_name -w password_file \
-e "select * from db.table_name;” > result.csv
Run Code Online (Sandbox Code Playgroud)
这再次以表格格式数据显示结果,以|
.
默认情况下,beeline 基本上是返回 header( table_name.column_name
),然后是表格格式的数据。然而,我想消除这一点并获得像 hive CLI 这样的结果。
您可以使用参数--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"
Run Code Online (Sandbox Code Playgroud)
考虑是否使用 tsv2
id value comment
1 Value1 Test comment 1
2 Value2 Test comment 2
3 Value3 Test comment 3
Run Code Online (Sandbox Code Playgroud)
如果使用 dsv(分隔符是 |)
id|value|comment
1|Value1|Test comment 1
2|Value2|Test comment 2
3|Value3|Test comment 3
Run Code Online (Sandbox Code Playgroud)
您的数据将如下所示。请记住,如果值中有特殊字符或换行符,则这三个值在值周围使用单引号启用。可以通过将 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'
Run Code Online (Sandbox Code Playgroud)
当使用 tsv 时,则
'id' 'value' 'comment'
'1' 'Value1' 'Test comment 1'
'2' 'Value2' 'Test comment 2'
'3' 'Value3' 'Test comment 3'
Run Code Online (Sandbox Code Playgroud)
请注意,在使用csv 或 tsv 时,您将始终有被值包围的单引号,并且您无法摆脱它,这在少数情况下可能会导致一些问题。
希望以上详细说明能够涵盖您想要涵盖的所有可能情况。
有关更多解释,请访问Apache Beeline Wiki 页面。干杯!!