1、Hive支持的一些命令
退出使用quit或exit離開交互式外殼。
set key = value使用它來設置特定配置變量的值。 這里要注意的一件事是,如果您對變量名拼寫錯誤,cli將不會顯示錯誤。
set這將打印由用戶或配置單元覆蓋的配置變量列表。
set -v這將打印所有hadoop和hive配置變量。
添加文件[文件] [文件] *將文件添加到資源列表
添加jar jarname
list FILE列出所有添加到分布式緩存的文件
list FILE [file] *檢查給定資源是否已經添加到分布式緩存中
! [cmd]從配置單元外殼執行外殼命令
dfs [dfs cmd]從配置單元外殼執行dfs命令
2、語法結構
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)
7、-S:表示以不打印日志的形式執行命名操作
linux命令行下直接運行HQL:hive -e "select * from cookie.cookie1;"
linux命令行下調用寫好的HQL文件:hive -f hive.sql
linux命令行下調用寫好的Conf文件配置參數 hive -i initive.conf
二、Hive的參數配置方式
1、Hive的參數配置大全
https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties
2、Hive的參數設置方式
開發 Hive 應用時,不可避免地需要設定 Hive 的參數。設定 Hive 的參數可以調優 HQL 代碼 的執行效率,或幫助定位問題。然而實踐中經常遇到的一個問題是,為什么設定的參數沒有 起作用?這通常是錯誤的設定方式導致的
對於一般參數,有以下三種設定方式
1、配置文件 (全局有效)
Hive 的配置文件包括:
A. 用戶自定義配置文件:$HIVE_CONF_DIR/hive-site.xml
B. 默認配置文件:$HIVE_CONF_DIR/hive-default.xml
用戶自定義配置會覆蓋默認配置。
另外,Hive 也會讀入 Hadoop 的配置,因為 Hive 是作為 Hadoop 的客戶端啟動的,Hive 的配 置會覆蓋 Hadoop 的配置。
配置文件的設定對本機啟動的所有 Hive 進程都有效。
2、命令行參數(對 hive 啟動實例有效)
啟動 Hive(客戶端或 Server 方式)時,可以在命令行添加-hiveconf param=value 來設定參數,例如:
hive -hiveconf hiveroot.logger=INFO,console
這一設定對本次啟動的 session(對於 server 方式啟動,則是所有請求的 session)有效。
3、參數聲明 (對 hive 的連接 session 有效)
這一設定的作用域也是 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 建立以前已經完成了。