hive的變數前面有乙個命名空間,包括三個hiveconf,system,env,還有乙個hivevar
1. hiveconf的命名空間指的是hive-site.xml下面的配置變數值。
2. system的命名空間是系統的變數,包括jvm的執行環境。
3. env的命名空間,是指環境變數,包括shell環境下的變數資訊,如hadoop_home之類的
普通的變數可以使用
--define key=value
或者 --hivevar key=value
來宣告,這都代表是hivevar,的變數。
如:$ hive --define key=value
簡寫 hive -d key=value
或$ hive --hivevar key=value
新增多個變數的時候如下:
sql**
$ hive --define a='a' --define b='b'
對於使用hivevar,字首是可有可無的,如:
sql**
hive> create
table toss1(i int, $ string);
等價於sql**
hive> create
table toss2(i2 int, $ string);
但是對於使用命名空間如hiveconf,system,env的,字首則不可少
在hive下面,可以通過
set;
或者set -v;
來檢視現有環境的所有變數的值。加上 -v引數,可以獲取到hdfs和mapreduce的環境變數資訊。
乙個簡單的sample
sql**
hive> set
current_date='2012-09-16';
hive> select * from foo where
day >= '$'
similarly, you could pass on command line:
hive -f ***.hql
$ hive -hiveconf current_date='2012-09-16' -hiveconf current_date='2012-09-16' -f test.hql
hive -hiveconf mapred.job.queue.name=queue2 -e "set mapred.job.queue.name;"
Hive下的變數使用
hive變數 hive的變數前面有乙個命名空間,包括三個hiveconf,system,env,還有乙個hivevar 1.hiveconf的命名空間指的是hive site.xml下面的配置變數值。2.system的命名空間是系統的變數,包括jvm的執行環境。3.env的命名空間,是指環境變數,包...
hive的變數傳遞設定
今天同事在oozie的workflow中執行乙個hive查詢,但是直接就報異常 variable substitution depth too large 40,從網上查詢可知,可以確認是由於語句中使用了過多的變數導致,在hive以前的版本中,這個限制是寫死的40個,查詢hive的最新的原 雖然判斷...
chrome下使用的let,const變數的誤區
學es6,總是習慣在控制項臺直接貼上 執行,用到let,const變數時在chrome總出錯,按提示在第一行加 use strict 還是不行!use strict function iterentries obj let myobj for let key of iterentries myobj...