1. 程式人生 > >Hive參數配置

Hive參數配置

tab console put isp 相關 lec sel 大全 邏輯

1. Hive 命令行
輸入$HIVE_HOME/bin/hive –H 或者 –help可以顯示幫助選項:
說明:
1、 -i 初始化HQL文件。
2、 -e從命令行執行指定的HQL
3、 -f 執行HQL腳本
4、 -v 輸出執行的HQL語句到控制臺
5、 -p <port> connect to Hive Server on port number
6、 -hiveconf x=y Use this to set hive/hadoop configuration variables.
例如:
$HIVE_HOME/bin/hive -e ‘select * from tab1 a‘
$HIVE_HOME/bin/hive -f /home/my/hive-script.sql
$HIVE_HOME/bin/hive -f hdfs://<namenode>:<port>/hive-script.sql
$HIVE_HOME/bin/hive -i /home/my/hive-init.sql
$HIVE_HOME/bin/hive -e ‘select a.col from tab1 a‘
--hiveconf hive.exec.compress.output=true
--hiveconf mapred.reduce.tasks=32
2. Hive 參數配置方式
Hive參數大全:
https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties
開發Hive應用時,不可避免地需要設定Hive的參數。設定Hive的參數可以調優HQL代碼的執行效率,或幫助定位問題。然而實踐中經常遇到的一個問題是,為什麽設定的參數沒有起作用?這通常是錯誤的設定方式導致的。
對於一般參數,有以下三種設定方式:
配置文件 (全局有效)
命令行參數 (對hive啟動實例有效)
參數聲明 (對hive的連接session有效)

配置文件
用戶自定義配置文件:$HIVE_CONF_DIR/hive-site.xml
默認配置文件:$HIVE_CONF_DIR/hive-default.xml
用戶自定義配置會覆蓋默認配置。
另外,Hive也會讀入Hadoop的配置,因為Hive是作為Hadoop的客戶端啟動的,Hive的配置會覆蓋Hadoop的配置。

配置文件的設定對本機啟動的所有Hive進程都有效。
命令行參數
啟動Hive(客戶端或Server方式)時,可以在命令行添加-hiveconf來設定參數 例如:bin/hive -hiveconf hive.root.logger=INFO,console
設定對本次啟動的Session(對於Server方式啟動,則是所有請求的Sessions)有效。
參數聲明
可以在HQL中使用SET關鍵字設定參數,這一設定的作用域也是session級的。
比如:
set hive.exec.reducers.bytes.per.reducer=<number> 每個reduce task的平均負載數據量
set hive.exec.reducers.max=<number> 設置reduce task數量的上限
set mapreduce.job.reduces=<number> 指定固定的reduce task數量
但是,這個參數在必要時<業務邏輯決定只能用一個reduce task> hive會忽略
上述三種設定方式的優先級依次遞增。即參數聲明覆蓋命令行參數,命令行參數覆蓋配置文件設定。註意某些系統級的參數,例如log4j相關的設定,必須用前兩種方式設定,因為那些參數的讀取在Session建立以前已經完成了。

Hive參數配置