Hive設定引數-指定引擎-佇列
Hive提供三種可以改變環境變數的方法,分別是:(1)、修改${HIVE_HOME}/conf/hive-site.xml配置檔案;(2)、命令列引數;(3)、在已經進入cli時進行引數宣告。下面分別來介紹這幾種設定。
方法一: 在Hive中,所有的預設配置都在{HIVE_HOME}/conf目錄下。裡面可以對一些配置進行個性化設定。在hive-site.xml的格式如下:
<configuration> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> <description>location of default database for the warehouse</description> </property> </configuration>
所有的配置都是放在標籤之間,一個configuration標籤裡面可以存在多個標籤。標籤裡面就是我們想要設定屬性的名稱;標籤裡面是我們想要設定的值;<description;<標籤是描述在這個屬性的,可以不寫。絕大多少配置都是在xml檔案裡面配置的,因為在這裡做的配置都全域性使用者都生效,而且是永久的。使用者自定義配置會覆蓋預設配置。另外,Hive也會讀入Hadoop的配置,因為Hive是作為Hadoop的客戶端啟動的,Hive的配置會覆蓋Hadoop的配置。
方法二: 在啟動Hive cli的時候進行配置,可以在命令列新增-hiveconf param=value來設定引數,例如:
1
[[email protected] ~]$ hive --hiveconf mapreduce.job.queuename=queue1
這樣在Hive中所有MapReduce作業都提交到佇列queue1中。這一設定對本次啟動的會話有效,下次啟動需要重新配置。
方法三: 在已經進入cli時進行引數宣告,可以在HQL中使用SET關鍵字設定引數,例如:
hive> set mapreduce.job.queuename=queue1;
這樣也能達到方法二的效果。這種配置也是對本次啟動的會話有效,下次啟動需要重新配置。在HQL中使用SET關鍵字還可以檢視配置的值,如下:
hive> set mapreduce.job.queuename;
mapreduce.job.queuename=queue1
我們可以得到mapreduce.job.queuename=queue1。如果set後面什麼都不新增,這樣可以查到Hive的所有屬性配置,如下:
hive> set;
datanucleus.autoCreateSchema=true
datanucleus.autoStartMechanismMode=checked
datanucleus.cache.level2=false
datanucleus.cache.level2.type=none
datanucleus.connectionPoolingType=DBCP
datanucleus.identifierFactory=datanucleus
datanucleus.plugin.pluginRegistryBundleCheck=LOG
datanucleus.storeManagerType=rdbms
datanucleus.transactionIsolation=read-committed
datanucleus.validateColumns=false
datanucleus.validateConstraints=false
datanucleus.validateTables=false
............................
上述三種設定方式的優先順序依次遞增。即引數宣告覆蓋命令列引數,命令列引數覆蓋配置檔案設定。