命令行界面
变量和属性
define key=value
和--hivevar key=value
是等价的,都是让用户在命令行自定义用户自定义变量以便在hive脚本中使用
在CLI命令中可以使用SET命令显示或者修改变量值
$hive
hive>set env:HOME;
hive>set; #set命令会打印出命名空间hivevar,hiveconf,system和env中所有的变量
hive>set -v; #使用-v标记,则还会打印hadoop中所定义的所有属性
set给变量赋新值
$hive --define foo=bar
hive> set foo;
#out: foo=bar
hive> set hivevar:foo;
#out: hivevar: foo=bar;
hive> set hivevar:foo=bar2;
hive> set foo;
#out: foo=bar2
hive> set foo;
#foo=bar2
hive> set hivevar:foo;
#out: hivevar:foo=bar2
system空间命名:
Java系统属性对这个命名空间内容具有可读可写权力,而env命名空间,对于环境变量只提供可读权限
hive> set system:user.name;
#out: system: user.name=myusername
hive> set system:user.name=yourusername
hive> set system:user.name;
#out: system:user.ame=yourusername
hive> set env:HOME;
#out: env:HOME=/home/yourusername
hive> set env:HOME=yourusername
#out: env:* variables can not be set
Hive中一次使用命令
hive --help --service cli
还显示CLI所提供的选项列表
-e
: 用户在执行一个或者多个查询(使用分号分隔), 执行结束后hive CLI立即退出
$ hive -e "SELECT * FROM mytable LIMITE 3"
-S
: 开启静默模式,可以在输出中去掉“OK”和“Time taken”
$ hive -e "SELECT * FROM mytable LIMITE 3" >/tmp/myquery
从文件中执行Hive查询
Hive中可以使用-f文件名方式执行指定文件中的一个或者多个查询语句,一般这些查询文件保存为.q
和.hql
后缀名的文件
$hive -f /path/to/file/withqueries.hql
在Hive shell中用户可以使用SOURCE命令来执行一个脚本文件
$cat /path/to/file/withqueries.hql
SELECT x.* FROM src x;
$hive
hive> source /path/to/file/withqueries.hql
Hive脚本中进行注释
用--
开头的字符串表示注释