Hive常⽤交互命令与属性配置


Hive常⽤交互命令与变量属性

一、Hive常用交互命令

1.启动集群

image-20230401082910069

2.查看帮助

image-20230401082756994

3.使用参数

1)在Hive命令行里创建一个表student,并插入1条数据
create table student(id int,name string);
insert into table student values(1,"zhangsan");
select * from student;

image-20230401084208173

image-20230401084223964

image-20230401084238137

2)打开hive命令⾏窗⼝时定义变量
hive --define foo=bar
或者
hive -d foo=bar
或者
hive --hivevar foo=bar

–defifine key=value和–hivevar key=value是等价的。⼆者都是让⽤户在命令⾏定义⾃定义变量以便在Hive脚本中使⽤。

当⽤户使⽤这个功能时,hive会将这些键值对放到hivevar命名空间,以便和其他3种内置命名空间(hiveconf、system、env)进⾏区分。

image-20230401090123385

3)打开verbose模式

verbose模式会在命令⾏窗⼝中显示要执⾏的sql语句

hive --verbose

image-20230401090746991

4)“-e”不进入hive的交互窗口执行hql语句
hive -e "select id from student;"

image-20230401084402944

5)“-f”执行脚本中的hql语句

(1)在$HIVE_HOME/下创建datas目录并在datas目录下创建hivef.sql文件

image-20230401084612905

image-20230401084822334

(2)文件中写入正确的hql语句

select * from student;

(3)执行文件中的hql语句

hive -f $HIVE_HOME/datas/hivef.sql

image-20230401085007400

(4)执行文件中的hql语句并将结果写入文件中

hive -f $HIVE_HOME/datas/hivef.sql  > $HIVE_HOME/datas/hive_result.txt

image-20230401085138332

image-20230401085234849

6)指定⼀个⽂件,当 CLI 启动时,在命令提示符出现前会先执⾏这个⽂件
hive -i init.hql
7)查看在 hive 中输⼊的所有历史命令

进⼊到当前⽤户的根⽬录 /root 或/home/hive

image-20230401091512739

image-20230401091428924

查看. hivehistory ⽂件

image-20230401091627948

image-20230401091602547

8)退出Hive命令⾏窗⼝
hive (default)> quit;
hive (default)> exit;
9)在Hive内使⽤Hadoop的dfs命令
dfs -ls /;

image-20230401092520939

10)Hive脚本中如如何进⾏注释

在Hive脚本中⽤户可以使⽤发–开头的字符串来表示注释,例如:

image-20230401092720431

11)执⾏Shell命令

⽤户不需要退出Hive CLI就可以执⾏简单的bash shell命令。只要在命令前加上!并且以分号(;)结尾就可以。

image-20230401093016405

在可视化工具中不能执行。

二、Hive变量和属性

Hive变量是以Java字符串的形式存储的,⽤户可以在查询中引⽤变量。Hive会先使⽤变量值替换掉查询的变量引⽤,然后才会将查询语句提交给查询处理器。

Hive中使⽤的变量和属性是放在不同的命令空间中,以便于区分。下表给出了Hive中使⽤的4种命名空间。

命名空间使⽤权限描述
hivevar可读/可写⽤户⾃定义变量
hiveconf可读/可写Hive相关的配置属性
system可读/可写Java定义的配置属性
env只读Shell环境(例如bash)定义的环境变量

注:变量和属性是在不同上下⽂中使⽤的术语,在⼤多数情况下它们的功能是⼀样的。

1. hivevar

hivevar空间中定义的变量⽤于传参数 ,专⻔提供给⽤户⾃定义变量。在CLI中,可以使⽤set命令显示或者修改变量值。

下例显示env空间中HOME变量的值

image-20230401093701897

直接使⽤set命令会打印出命令空间hivevar、hiveconf、system和env中所有的变量。使⽤set -v命令还会打印Hadoop中所定义的所有属性。

set命令还可⽤于给变量赋值。

# hive -d foo=bar

hive (default)> set foo;
foo=bar

hive (default)> set hivevar:foo;
hivevar:foo=bar

hive (default)> set hivevar:foo=bar2;

hive (default)> set foo;
foo=bar2

hive (default)> set hivevar:foo;
hivevar:foo=bar2

hivevar:是可选的,代表⽤户⾃定义变量的命名空间。

在CLI的查询语句中的变量引⽤会先被替换为具体的值,然后才会提交给查询处理器。例如:

--启动hive命令行并定义变量foo
hive -d foo=bar
--创建表book并使用了变量foo
hive (default)> create table book(id int, ${hivevar:foo} string);
--查看创建的表book
hive (default)> describe book;
OK
col_name data_type comment
id                 int
bar                string
Time taken: 0.311 seconds, Fetched: 2 row(s)
--删除表book
hive (default)> drop table book;
--创建表book去掉hivevar:前缀
hive (default)> create table book(id int, ${foo} string);
--查看表结构发现,加不加hivevar:前缀表结构是一样的
hive (default)> describe book;
OK
col_name data_type comment
id					int
bar					string
Time taken: 0.311 seconds, Fetched: 2 row(s)

注意:变量名不能使⽤hive的保留关键字,否则会出现解析错误。

2. hiveconf

hiveconf空间中定义的变量⽤于配置Hive⾏为的所有属性,包括了hive-site.xml中配置的hive全局变量。

开启hive.cli.print.current.db属性,这个属性可以在CLI提示符前打印出当前所在数据库名,默认的数据库名为default。这个属性的默认值为false。

# hive --hiveconf hive.cli.print.current.db=true
hive (default)> set hive.cli.print.current.db;
hive.cli.print.current.db=true

hive (default)> set hiveconf:hive.cli.print.current.db=false;
hive> set hive.cli.print.current.db;
hive.cli.print.current.db=false

3. system和env

Java系统属性对system命名空间内容具有可读写权利,⽽env命令空间,对于环境变量只提供可读权限。注意和hivevar变量不同,⽤户必须使⽤system:或者env:前缀来指定系统属性和环境变量。

4. 总结

hive属性有3种配置⽅式,分别可以在hive-site.xml中配置、命令⾏参数中配置、SET设定参数配置,上述三种设定⽅式的优先级依次递增。即配置⽂件<命令⾏参数<参数声明。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W_chuanqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值