Hive 中的變量


Hive的變量前面有一個命名空間,包括三個hiveconf,system,env,還有一個hivevar

  • hiveconf的命名空間指的是hive-site.xml下面的配置變量值。
  • system的命名空間是系統的變量,包括JVM的運行環境。
  • env的命名空間,是指環境變量,包括Shell環境下的變量信息,如HADOOP_HOME之類的

 實例:

set mapreduce.job.split.metainfo.maxsize=-1;
set hive.exec.parallel=true;
set day='2018-08-30';
set window_day=50

select 
        *
from 
	table_name
where 
	dt >= date_sub(${hiveconf:day}, ${hiveconf:window_day})
	and dt <= ${hiveconf:day}

  

 

 

1 、hivevar與hiveconf的區別:

 

命名空間 使用權限 詳細描述
hivevar rw 用戶自定義變量
hiveconf rw hive相關配置屬性
system rw java定義的配置屬性
env r Shell環境屬性

通常我們可以使用hive -e查看有關hivevar與hiveconf的描述:

2、hivevar與hiveconf的作用域

之前項目中涉及兩個hive作業同時執行並需要傳入相同key的參數,因此顧慮不清楚是否是線程安全。

結論先行:hivevar與hiveconf作用域都是會話級別的,言外之意就是如果兩個並發同時跑的作業同時傳入一個相同key但是value不相同的值的參數,不會發生線程安全問題。

3、對於hivevar與hiveconf的使用

hiveconf變量取值必須要使用hiveconf作為前綴參數,具體格式如下:

      ${hiveconf:key}  

但是對於hivevar取值可以不使用前綴hivevar,具體格式如下:

使用前綴:

       ${hivevar:key}

不使用前綴:

       ${key}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM