宏能夠看作是一個簡短的函數,或者是對一個表達式取別名,同時能夠將這個表達式中的一些值作成變量調用時傳入,比較適合於作分析時爲一些臨時須要用到不少次的表達式操做封裝一下取個簡短點的別名來調用。宏只在當前會話有效,當退出hive控制檯再進入時上次建立的宏就丟失了,若是須要永久保留某個宏,能夠將其加入到${HIVE_HOME}/.hiverc文件中。html
建立宏的語法:sql
CREATE TEMPORARY MACRO macro_name([col_name col_type, ...]) expression;
一些例子:express
hive> CREATE TEMPORARY MACRO fixed_number() 42; OK Time taken: 0.053 seconds hive> SELECT fixed_number(); OK 42 Time taken: 0.339 seconds, Fetched: 1 row(s) hive> CREATE TEMPORARY MACRO string_len_plus_two(x string) length(x) + 2; OK Time taken: 0.106 seconds hive> SELECT string_len_plus_two("foobar"); OK 8 Time taken: 0.533 seconds, Fetched: 1 row(s) hive> CREATE TEMPORARY MACRO simple_add (x int, y int) x + y; OK Time taken: 0.041 seconds hive> SELECT simple_add(1, 1); OK 2 Time taken: 0.403 seconds, Fetched: 1 row(s)
刪除宏的語法:apache
DROP TEMPORARY MACRO [IF EXISTS] macro_name;
刪除宏的例子:segmentfault
hive> DROP TEMPORARY MACRO foo; OK Time taken: 0.029 seconds hive> DROP TEMPORARY MACRO IF EXISTS foo; OK Time taken: 0.074 seconds
相關資料:函數
1. Create Temporary Macrohtm
2. Hive中常被忽視的利器——宏ip
.get