CLI
命令行界面也就是CLI,是和HIVe进行交互的最常用的方式。使用CLI,用户可以创建表,交叉模式以及查询等。
CLI选项
hive --help --service cli
变量和属性
--define key=value
实际上和--hivevar key=value
是等价的。二者都可以让用户在命令行中定义用户自定义变量以便在hive标本中引用。
当用户使用这个功能时,Hive会将这些键值对放在hivevar
命名空间中,这样就可以和其他3中内置命名空间(hiveconf,system,env)进行区分.
Hive中变量的属性命名空间
命名空间 | 使用权限 | 描述 |
hivevar | 可读/可写 | (hive0.8以后版本)用户自定义的变量 |
hiveconf | 可读/可写 | hive相关的配置属性 |
system | 可读/可写 | java定义的配饰属性 |
env | 只可读 | Shell环境(例如bash)定义的环境变量 |
Hive变量内部是以Java字符串的方式存储的。用户可以在查询中引用变量。Hive会先使用变量值替换查询变量的引用,然后才会将查询语句提交给查询处理器。
在CLI中可以使用SET命令显示或者修改变量值
-
hive>set
会将四个命名空间中的所有的变量都打印出来。 -
hive>set -v
会将Hadoop中所定义的所有属性,以及上边的内容都打印出来。
用户定义变量hivevar
- 外部shell
hive --define key=value
- 内部shell
set hivevar:key=value
- 前缀hivevar是可以省略的
在CLI中查询语句的变量引用会被替换掉然后菜提交给查询处理器
注意""字符串还是要加
hiveconf
hive cli.print.current.db=true
,开启这个属性可以在CLI提示符前打印出当前所在的数据库名
hivesystem
system命名空间,JAVA对这个空间具有可读可写的权利
env
对于环境变量只有读的权利
和hivevar中的变量不同,用户必须指明system或者env前缀来操作其中的变量。
HIVE中的"一次命令"
用户可能有时期望执行一个或者多个查询(使用分号分割),执行结束后,hive CLI 立刻退出,HIve提供了这样的功能,因为CLI可以接受 -e这样的形式。
可以将这个查询结果保存到一个文件中。增加-S选项可以开启静默模式,在输出结果中去除“OK”和“TIME taken”等行,只保留查询结果
当用户不能完全记得某个属性名时,可以使用下边的方法来模糊获取属性名。
从文件中执行Hive查询
Hive可以使用-f文件名的方式来执行指定文件中的一个或者多个查询。按照惯例,通常把这些hive查询文件保存为具有.q或者.hql结尾的文件。
- 外部执行
- 内部执行
hiverc文件
hive -i 文件名
这个选项允许用户制定一个文件,CLI启动时,在提示符出现前自动执行这个文件。Hive会在HOME下自动寻找名为.hiverc的文件。
例如我们可以将刚才设置的显示数据库名加入.hiverc文件中使每次启动时都能显示数据库
hive -v
普通模式
冗余模式
查看操作命令历史
在HOME文件下的.hivehistory
在CLI中可以通过上下箭头来查看,并通过enter再次执行
hive中的标本如何注释
显示字段名
set hive.cli.print.header=true;