有趣的地方

有趣的地方

hive beeline参数及示例用法

beeline 是一个用于连接 HiveServer2 的命令行工具。

一、beeline参数

使用beeline -u可以指定连接的URL。
例如,beeline -u jdbc:hive2://localhost:10000/default 可以连接到本地的HiveServer2服务。
如果需要用户名和密码进行连接,则可以使用 beeline -u jdbc:hive2://localhost:10000/default -n username -p password 的方式进行连接。如果密码不是在-p之后提供的,则 beeline 将在初始化连接时提示输入密码。

-–incremental=[true/false]  从Hive 2.3版本往后默认是true,在它之前是默认为false。
-–showHeader=[true/false]    展示列名是否在查询结果中。默认是true。
-–outputformat=[table/vertical/csv/tsv/dsv/csv2/tsv2]    结果展示的模式。默认是table。dsv可配合delimiterForDSV一起使用,设置分隔符
-–delimiterForDSV= DELIMITER    用于输出格式中划分值的界定符。默认是 '|',如果需要输入特殊符号,如 '\n001' ,'\x01' 等需在前面加$ ,例 --delimiterForDSV=$'\t'
-e    后跟sql语句
-f  后跟sql语句文件,文件里sql语句前面可以设置hive参数
--hiveconf 给Hive的配置属性赋值,--hiveconf 属性 = value
--hivevar 配置变量名称和值,--hivevar 名称 = value,可用于给 sql 文件传值,例如 -hiveconf etl_date=20231129


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


二、示例

1、beeline默认的输出格式为table模式,-–showHeader=默认是true

beeline -e 'select * from import_db.table_test' > test1.txt

2、去掉列名,-–showHeader=false

beeline --showHeader=false -e 'select * from import_db.table_test' > test2.txt

3、用逗号分割

beeline --outputformat=csv2 -e 'select * from import_db.table_test'  > test3.txt

4、用tab作为值之间的分割符

beeline --outputformat=tsv2 -e 'select * from import_db.table_test'  > test4.txt

5、使用dsv默认的分割符,即 '|'

beeline --outputformat=dsv -e 'select * from import_db.table_test'  > test5.txt

6、以 '\t' 作为值之间得分割符(–delimiterForDSV=$'\t')

beeline --outputformat=dsv --delimiterForDSV=$'\t' -e 'select * from import_db.table_test'  > test6.txt

7、以 '#' 作为值之间得分割符(–delimiterForDSV=$'#')

beeline --outputformat=dsv --delimiterForDSV=$'#' -e 'select * from import_db.table_test'  > test7.txt


beeline -u jdbc:hive2://localhost:10000/default --showHeader=true --outputformat=dsv --delimiterForDSV=$'\t' -e 'select * from import_db.test' > test.txt
beeline -u "jdbc:hive2://localhost:10000/default;principal=xxxx" -e "show create table import_db.test"

三、常用日期格式

date +%F  #2023-11-30
date +%Y%m  #202311
date +%Y%m%d  #20231130
date +%Y%m01  #20231101


date +%Y%m%d  #20231130
date -d "1 month ago" +%Y%m%d  #20231030
date -d "1 month ago" +%Y%m01  #20231001

date -d "last month" +%Y%m%d  #20231030
date -d "last month" +%Y%m01  #20231001

date -d "`date -d "last month" +%Y%m01` last day" +%Y%m%d  #20230930


# 上月末(月初前一天)
date -d "`date +%Y%m01` last day" +%Y%m%d
date -d "`date +%Y%m01` last day" +%Y%m%d  #20231031
date -d "`date +%Y%m01` -1 day" +%Y%m%d  #20231031

# 月初后1天
date -d "`date +%Y%m01` 1 day" +%Y%m%d  #20231102

cur_date=20231102
echo $cur_date |cut -c 1-6  #202311
date -d `echo $cur_date |cut -c 1-6`"01" +%F  #2023-11-01
date -d "$(date -d `echo $cur_date |cut -c 1-6`"01" +%F) -1 day" +%Y%m%d  #20231031
date -d "$(date -d `echo $cur_date |cut -c 1-6`"01" +%F) last month" +%Y%m%d  #20231001

date -d "$(date -d "$(date -d `echo $cur_date |cut -c 1-6`"01" +%F) last month" +%Y%m%d) -1 day" +%Y%m%d  #20230930

#设置变量,获取年月
data_month=$(date +%Y%m)
data_file_${data_month}.dat

data_file_$(date +%Y%m).dat

# 跑批常用代码
cur_date=20231102
cur_date2=$(date -d "$(date -d `echo $cur_date |cut -c 1-6`"01" +%F) -1 day" +%Y%m%d)

beeline -u "jdbc:hive2://localhost:10000/default;principal=xxxx" -hiveconf cur_date=${cur_date} -hiveconf cur_date2=${cur_date2} -f test.sql

参考链接:

https://blog.csdn.net/sodaloveer/article/details/128617521


 

发表评论:

Powered By Z-BlogPHP 1.7.3

© 2018-2020 有趣的地方 粤ICP备18140861号-1 网站地图