Command Descriptionsql
quit Use quit or exit to leave the interactive shell.shell
set key=value Use this to set value of particular configuration variable. One thing to note here is that if you misspell the variable name, cli will not show an error.apache
set This will print a list of configuration variables that are overridden by user or hive.cookie
set -v This will print all hadoop and hive configuration variables.session
add FILE [file] [file]* Adds a file to the list of resourceside
add jar jarnameoop
list FILE list all the files added to the distributed cacheui
list FILE [file]* Check if given resources are already added to distributed cachethis
! [cmd] Executes a shell command from the hive shellspa
dfs [dfs cmd] Executes a dfs command from the hive shell
[query] Executes a hive query and prints results to standard out
source FILE Used to execute a script file inside the CLI.
hive [-hiveconf x=y]* [<-i filename>]* [<-f filename>|<-e query-string>] [-S]
說明:
一、-i 從文件初始化 HQL
二、-e 從命令行執行指定的 HQL
三、-f 執行 HQL 腳本
四、-v 輸出執行的 HQL 語句到控制檯
五、-p connect to Hive Server on port number
六、-hiveconf x=y(Use this to set hive/hadoop configuration variables)
七、-S:表示以不打印日誌的形式執行命名操做
[hadoop@hadoop3 ~]$ hive -e "select * from cookie.cookie1;"
編寫hive.sql文件
運行編寫的文件
從配置文件啓動 hive,並加載配置文件當中的配置參數
https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties
開發 Hive 應用時,不可避免地須要設定 Hive 的參數。設定 Hive 的參數能夠調優 HQL 代碼 的執行效率,或幫助定位問題。然而實踐中常常遇到的一個問題是,爲何設定的參數沒有 起做用?這一般是錯誤的設定方式致使的
對於通常參數,有如下三種設定方式:
一、配置文件 (全局有效)
二、命令行參數(對 hive 啓動實例有效)
三、參數聲明 (對 hive 的鏈接 session 有效)
Hive 的配置文件包括:
A. 用戶自定義配置文件:$HIVE_CONF_DIR/hive-site.xml
B. 默認配置文件:$HIVE_CONF_DIR/hive-default.xml
用戶自定義配置會覆蓋默認配置。
另外,Hive 也會讀入 Hadoop 的配置,由於 Hive 是做爲 Hadoop 的客戶端啓動的,Hive 的配 置會覆蓋 Hadoop 的配置。
配置文件的設定對本機啓動的全部 Hive 進程都有效。
啓動 Hive(客戶端或 Server 方式)時,能夠在命令行添加-hiveconf param=value 來設定參數,例如:
這一設定對本次啓動的 session(對於 server 方式啓動,則是全部請求的 session)有效。
能夠在 HQL 中使用 SET 關鍵字設定參數,例如:
這一設定的做用域也是 session 級的。
set hive.exec.reducers.bytes.per.reducer= 每一個 reduce task 的平均負載數據量 Hive 會估算總數據量,而後用該值除以上述參數值,就能得出須要運行的 reduceTask 數
set hive.exec.reducers.max= 設置 reduce task 數量的上限
set mapreduce.job.reduces= 指定固定的 reduce task 數量
可是,這個參數在必要時<業務邏輯決定只能用一個 reduce task> hive 會忽略,好比在設置 了 set mapreduce.job.reduces = 3,可是 HQL 語句當中使用了 order by 的話,那麼就會忽略該參數的設置。
上述三種設定方式的優先級依次遞增。即參數聲明覆蓋命令行參數,命令行參數覆蓋配置 文件設定。注意某些系統級的參數,例如 log4j 相關的設定,必須用前兩種方式設定,由於 那些參數的讀取在 session 創建之前已經完成了。