[Hadoop]Hive r0.9.0中文文件(四)之Hive變數的使用

大搜車-自娛發表於2012-10-24
[size=large][b]一、介紹[/b][/size]
例子:

$ a=b
$ hive -e " describe $a "

如果你hive資料庫中沒有b這個表,則會提示Table b does not exist

hive的變數設定可以放在hiveconf中,使變數賦值與查詢合併為一句話:
例子:

$ bin/hive -hiveconf a=b -e 'set a; set hiveconf:a; \
create table if not exists b (col int); describe ${hiveconf:a}'

Results in:

Hive history file=/tmp/edward/hive_job_log_edward_201011240906_1463048967.txt
a=b
hiveconf:a=b
OK
Time taken: 5.913 seconds
OK
col int
Time taken: 0.754 seconds


[size=large][b]二、hive變數使用[/b][/size]

hive的變數有3個作用空間hiveconf,system,env。hiveconf就像平時一樣設定:

set x=myvalue


X變數會被這樣呼叫:
${hiveconf:x}

Annotated examples of usage from the test case

ql/src/test/queries/clientpositive/set_processor_namespaces.q

set zzz=5;
-- sets zzz=5
set zzz;

set system:xxx=5;
set system:xxx;
-- sets a system property xxx to 5

set system:yyy=${system:xxx};
set system:yyy;
-- sets yyy with value of xxx

set go=${hiveconf:zzz};
set go;
-- sets go base on value on zzz

set hive.variable.substitute=false;
set raw=${hiveconf:zzz};
set raw;
-- disable substitution set a value to the literal

set hive.variable.substitute=true;

EXPLAIN SELECT * FROM src where key=${hiveconf:zzz};
SELECT * FROM src where key=${hiveconf:zzz};
--use a variable in a query

set a=1;
set b=a;
set c=${hiveconf:${hiveconf:b}};
set c;
--uses nested variables.


set jar=../lib/derby.jar;

add file ${hiveconf:jar};
list file;
delete file ${hiveconf:jar};
list file;


[size=large][b]三、Disabling[/b][/size]
Variable substitution is on by default. If this causes an issue with an already existing script disable it.

set hive.variable.substitute=false;

相關文章