0


beeline连接hive的导出数据格式的参数及设置

文章目录


beeline数据导出参数格式

  • 参考语句
beeline -u jdbc:hive2://host:10000--incremental=true--showHeader=false--outputformat=dsv --delimiterForDSV=$'\t'-e 'select * from test' >./file.txt
  • 参数说明
    参数说明–incremental=[true/false]从Hive 2.3版本往后默认是true,在它之前是默认为false。当设置为false时,为了最佳的展示列宽,完整的结果集会在展示之前被收集然后缓存起来。当设置为true时,结果集一旦被抓取到就会立即展示, 为了在展示列的填充额外消耗更少的延迟和内存。当你在客户端遭遇一个内存溢出时,推荐设置–incremental=true (因为抓取到的结果集非常大)。–showHeader=[true/false]展示列名是否在查询结果中。默认是true。用例: beeline --showHeader=false–outputformat=[table/vertical/csv/tsv/dsv/csv2/tsv2]结果展示的模式。默认是table。dsv可配合delimiterForDSV一起使用,设置分隔符–delimiterForDSV= DELIMITER用于输出格式中划分值的界定符。默认是‘|’,如果需要输入特殊符号,如‘\n001’ ,‘\x01’等需在前面加$ ,例 --delimiterForDSV=$’\t’-e 导出sql

  • 结果展示格式(在outputformat参数中设置)

展示形式主要是将一行值的字段按照不同分割符分开,主要包括五种分割输出格式:csv, tsv, csv2, tsv2, dsv,目前csv和tsv已经被csv2和tsv2替代了。
dsv,csv2和tsv2格式的含义分别是:
csv2使用的是逗号,
tsv2使用的是tab空格,
dsv是可配置的。对于dsv格式,分隔符可以通过用参数 delimiterForDSV 进行设置,默认是 ‘|’。


举例说明

  • 方式一:未设置showHeader、outputformat和delimiterForDSV参数的值,说明使用的是Beeline默认的输出格式,从outputformat说明中得知Beeline默认的输出各式为table模式,所以接下来就需要弄清楚table模式下字段分隔符是否为“|”,并且列名是否在查询结果中。–showHeader=默认是true。

语句

beeline -e "select * from table_test > ./test.txt"

展示结果如下

+------------+--------------+------------------+----------+-------------+----------------+--------------+| area_code  |   acc_nbr    |     serv_id      | prod_id  |  time_tag   |   model_type   | rule_result  |+------------+--------------+------------------+----------+-------------+----------------+--------------+|777|18028137123|120000485555514|3102|2023010914|507|10001|+------------+--------------+------------------+----------+-------------+----------------+--------------+
  • 方式二:去掉列名,–showHeader=false

语句

beeline --showHeader=false-e "select * from table_test > ./test.txt"

展示结果如下

|777|18028137123|120000485555514|3102|2023010914|507|10001|
  • 方式三:如果值之间用逗号分割,可以在beeline执行语句中加入–outputformat=csv2;如果值之间用tab分割,可以在beeline执行语句中加入–outputformat=tsv2。如果方式的分割符不满足需求,想通过其他分割符来分割beeline的执行结果值,可以在beeline执行语句中加入–outputformat=dsv2和–delimiterForDSV=其他分割符号。

1)用逗号分割

语句

beeline --outputformat=csv2 -e "$tj_sql">./test_3.txt

展示结果如下

area_code,acc_nbr,serv_id,prod_id,time_tag,model_type,rule_result
777,18028137123,120000485555514,3102,2023010914,507,10001

2)用tab作为值之间的分割符

语句

beeline --outputformat=tsv2 -e "$tj_sql">./test_3.txt

展示结果如下

area_code       acc_nbr serv_id prod_id time_tag        model_type      rule_result
777180281371231200004855555143102202301091450710001

3)其他分割符,将beeline的输出格式设置(–outputformat=dsv)为dsv,使用dsv默认的分割符,即‘|’。

语句

beeline --outputformat=dsv -e "$tj_sql">./test_3.txt

展示结果如下

area_code|acc_nbr|serv_id|prod_id|time_tag|model_type|rule_result
777|18028137123|120000485555514|3102|2023010914|507|10001

4)其他分割符,将beeline的输出格式设置为dsv(–outputformat=dsv),并以“\t”作为值之间得分割符(–delimiterForDSV=$‘\t’)。

语句

beeline --outputformat=dsv --delimiterForDSV=$'\t'-e "$tj_sql">./test_3.txt

展示结果如下

area_code       acc_nbr serv_id prod_id time_tag        model_type      rule_result
777180281371231200004855555143102202301091450710001

5)其他分割符,将beeline的输出格式设置为dsv(–outputformat=dsv),并以“#”作为值之间得分割符(–delimiterForDSV=$‘#’)。

语句

beeline --outputformat=dsv --delimiterForDSV=$'#'-e "$tj_sql">./test_3.txt

展示结果如下

area_code#acc_nbr#serv_id#prod_id#time_tag#model_type#rule_result
777#18028137123#120000485555514#3102#2023010914#507#10001
标签: hive 大数据 hadoop

本文转载自: https://blog.csdn.net/sodaloveer/article/details/128617521
版权归原作者 sodaloveer 所有, 如有侵权,请联系我们删除。

“beeline连接hive的导出数据格式的参数及设置”的评论:

还没有评论