天天看點

Hive Shell參數

1、Hive指令行

hive [-hiveconf x=y]* [<-i filename>]* [<-f filename>|<-e query-string>] [-S]

說明:

  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運作時候的參數配置

2、Hive參數配置方式

Hive參數大全:

https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties

開發Hive應用時,不可避免地需要設定Hive的參數。設定Hive的參數可以調優HQL代碼的執行效率,或幫助定位問題。然而實踐中經常遇到的一個問題是,為什麼設定的參數沒有起作用?這通常是錯誤的設定方式導緻的。

對于一般參數,有以下三種設定方式:

  1. 配置檔案 
  2. 指令行參數 
  3. 參數聲明 

配置檔案:Hive的配置檔案包括

  1. 使用者自定義配置檔案:$HIVE_CONF_DIR/hive-site.xml
  2. 預設配置檔案:$HIVE_CONF_DIR/hive-default.xml

使用者自定義配置會覆寫預設配置。

另外,Hive也會讀入Hadoop的配置,因為Hive是作為Hadoop的用戶端啟動的,Hive的配置會覆寫Hadoop的配置。

配置檔案的設定對本機啟動的所有Hive程序都有效。

指令行參數:啟動Hive(用戶端或Server方式)時,可以在指令行添加-hiveconf param=value來設定參數,例如:

bin/hive -hiveconf hive.root.logger=INFO,console

這一設定對本次啟動的Session(對于Server方式啟動,則是所有請求的Sessions)有效。

參數聲明:可以在HQL中使用SET關鍵字設定參數,例如:

set mapred.reduce.tasks=100;

這一設定的作用域也是session級的。

上述三種設定方式的優先級依次遞增。即參數聲明覆寫指令行參數,指令行參數覆寫配置檔案設定。

參數聲明  >   指令行參數   >  配置檔案參數(hive)

注意某些系統級的參數,例如log4j相關的設定,必須用前兩種方式設定,因為那些參數的讀取在Session建立以前已經完成了。

繼續閱讀