命令行界面
變量和屬性
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標(biāo)記欧聘,則還會打印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系統(tǒng)屬性對這個命名空間內(nèi)容具有可讀可寫權(quán)力,而env命名空間,對于環(huán)境變量只提供可讀權(quán)限
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所提供的選項(xiàng)列表
-e
: 用戶在執(zhí)行一個或者多個查詢(使用分號分隔), 執(zhí)行結(jié)束后hive CLI立即退出
$ hive -e "SELECT * FROM mytable LIMITE 3"
-S
: 開啟靜默模式捏膨,可以在輸出中去掉“OK”和“Time taken”
$ hive -e "SELECT * FROM mytable LIMITE 3" >/tmp/myquery
從文件中執(zhí)行Hive查詢
Hive中可以使用-f文件名方式執(zhí)行指定文件中的一個或者多個查詢語句,一般這些查詢文件保存為.q
和.hql
后綴名的文件
$hive -f /path/to/file/withqueries.hql
在Hive shell中用戶可以使用SOURCE命令來執(zhí)行一個腳本文件
$cat /path/to/file/withqueries.hql
SELECT x.* FROM src x;
$hive
hive> source /path/to/file/withqueries.hql
Hive腳本中進(jìn)行注釋
用--
開頭的字符串表示注釋