Apache Hive—命令行&參數配置方式

Hive參數配置

Hive命令行

輸入$HIVE_HOME/bin/hive -H或者-help可以顯示幫助選項。
說明:
1、-i 初始化HQL文件。
2、-e 從命令行執行指定的HQL
3、-f 執行HQL腳本
4、-v 輸出執行的HQL語句到控制檯
5、-p 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

在這裏插入圖片描述
在這裏插入圖片描述

Hive參數配置方式

Hive參數大全:
https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties
開發Hive應用時,不可避免地需要設定Hive的參數。設定Hive的參數可以調優HQL代碼的執行效率,或幫助定位問題。然而實踐中經常遇到的一個問題是,爲什麼設定的參數沒有起作用?這通常是錯誤的設定方式導致的。
對於一般參數,有以下三種設定方式:
配置文件(全局有效)
命令行參數(對hive啓動實例有效)
參數聲明(對hive的鏈接session有效)

hive執行引擎:
hive.execution.engine
可以不用mr做執行引擎,用spark做執行引擎。可以做相關設置修改。
在這裏插入圖片描述
設置分桶查詢:
mapred.reduce.tasks
默認值是-1
在這裏插入圖片描述

配置文件

用戶自定義配置文件:$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建立以前已經完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章