這里羅列常用操作,更多參考 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Cli
hive命令行
執行一個查詢
$HIVE_HOME/bin/hive -e 'select a.col from tab1 a'
之后過程中,會在終端上顯示mapreduce的進度,執行完畢后,最后把查詢結果輸出到終端上,接着hive進程退出,不會進入交互模式。
使用靜音模式執行一個查詢
$HIVE_HOME/bin/hive -S -e 'select a.col from tab1 a'
加入-S,終端上的輸出不會有mapreduce的進度,執行完畢,只會把查詢結果輸出到終端上。這個靜音模式很實用,,通過第三方程序調用,第三方程序通過hive的標准輸出獲取結果集。
使用靜音模式執行一個查詢,把結果集導出
$HIVE_HOME/bin/hive -S -e 'select a.col from tab1 a' > tab1.csv
不進入交互模式,執行一個hive script
$HIVE_HOME/bin/hive -f /home/my/hive-script.sql
hive-script.sql是使用hive sql語法編寫的腳本文件,執行的過程和-e類似,區別是從文件加載sql.
但是sql文件,對於bash來說,不能使用變量,而使用-e的方式,可以在bash里使用變量(但是對於sql文件的形式,可以利用程序基於變量動態生成sql文件,再執行,稍微麻煩點)。
這里可以和靜音模式-S聯合使用,通過第三方程序調用,第三方程序通過hive的標准輸出獲取結果集。
hive交互式模式
當$HIVE_HOME/bin/hive執行時,沒有-e或者-f選項,會進入交互式shell模式。
命令 | 描述 |
---|---|
quit exit |
退出交互式shell |
reset | 重置配置為默認值 |
set <key>=<value> | 修改特定變量的值 注意: 如果變量名拼寫錯誤,不會報錯 |
set | 輸出用戶覆蓋的hive配置變量 |
set -v | 輸出所有Hadoop和Hive的配置變量 |
add FILE[S] <filepath> <filepath>* add JAR[S] <filepath> <filepath>* add ARCHIVE[S] <filepath> <filepath>* |
添加 一個或多個 file, jar, archives到分布式緩存 |
list FILE[S] list JAR[S] list ARCHIVE[S] |
輸出已經添加到分布式緩存的資源。 |
list FILE[S] <filepath>* list JAR[S] <filepath>* list ARCHIVE[S] <filepath>* |
檢查給定的資源是否添加到分布式緩存 |
delete FILE[S] <filepath>* delete JAR[S] <filepath>* delete ARCHIVE[S] <filepath>* |
從分布式緩存刪除指定的資源 |
! <command> | 從Hive shell執行一個shell命令 |
dfs <dfs command> | 從Hive shell執行一個dfs命令 |
<query string> | 執行一個Hive 查詢,然后輸出結果到標准輸出 |
source FILE <filepath> | 在CLI里執行一個hive腳本文件 |
例子
hive> set mapred.reduce.tasks=32; hive> set; hive> select a.* from tab1; hive> !ls; hive> dfs -ls;