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

文章目录

  • Hive常⽤交互命令与变量属性
    • 一、Hive常用交互命令
      • 1.启动集群
      • 2.查看帮助
      • 3.使用参数
        • 1)在Hive命令行里创建一个表student,并插入1条数据
        • 2)打开hive命令⾏窗⼝时定义变量
        • 3)打开verbose模式
        • 4)“-e”不进入hive的交互窗口执行hql语句
        • 5)“-f”执行脚本中的hql语句
        • 6)指定⼀个⽂件,当 CLI 启动时,在命令提示符出现前会先执⾏这个⽂件
        • 7)查看在 hive 中输⼊的所有历史命令
        • 8)退出Hive命令⾏窗⼝
        • 9)在Hive内使⽤Hadoop的dfs命令
        • 10)Hive脚本中如如何进⾏注释
        • 11)执⾏Shell命令
    • 二、Hive变量和属性
      • 1. hivevar
      • 2. hiveconf
      • 3. system和env
      • 4. 总结

Hive常⽤交互命令与属性配置_第1张图片

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

一、Hive常用交互命令

1.启动集群

Hive常⽤交互命令与属性配置_第2张图片

2.查看帮助

Hive常⽤交互命令与属性配置_第3张图片

3.使用参数

1)在Hive命令行里创建一个表student,并插入1条数据

create table student(id int,name string);
insert into table student values(1,"zhangsan");
select * from student;

Hive常⽤交互命令与属性配置_第4张图片

Hive常⽤交互命令与属性配置_第5张图片

Hive常⽤交互命令与属性配置_第6张图片

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)进⾏区分。

Hive常⽤交互命令与属性配置_第7张图片

3)打开verbose模式

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

hive --verbose

Hive常⽤交互命令与属性配置_第8张图片

4)“-e”不进入hive的交互窗口执行hql语句

hive -e "select id from student;"

Hive常⽤交互命令与属性配置_第9张图片

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

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

Hive常⽤交互命令与属性配置_第10张图片

Hive常⽤交互命令与属性配置_第11张图片

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

select * from student;

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

hive -f $HIVE_HOME/datas/hivef.sql

Hive常⽤交互命令与属性配置_第12张图片

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

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

Hive常⽤交互命令与属性配置_第13张图片

Hive常⽤交互命令与属性配置_第14张图片

6)指定⼀个⽂件,当 CLI 启动时,在命令提示符出现前会先执⾏这个⽂件

hive -i init.hql

7)查看在 hive 中输⼊的所有历史命令

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

image-20230401091512739

Hive常⽤交互命令与属性配置_第15张图片

查看. hivehistory ⽂件

Hive常⽤交互命令与属性配置_第16张图片

Hive常⽤交互命令与属性配置_第17张图片

8)退出Hive命令⾏窗⼝

hive (default)> quit;
hive (default)> exit;

9)在Hive内使⽤Hadoop的dfs命令

dfs -ls /;

Hive常⽤交互命令与属性配置_第18张图片

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

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

Hive常⽤交互命令与属性配置_第19张图片

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设定参数配置,上述三种设定⽅式的优先级依次递增。即配置⽂件<命令⾏参数<参数声明。

你可能感兴趣的:(Hive数据仓库,hive,大数据,hadoop)