HIVE的Shell操作


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 建立以前已經完成了。










免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM