使用 hive -H
或者 hive --help
命令能夠查看全部命令的幫助,顯示以下:java
usage: hive -d,--define <key=value> Variable subsitution to apply to hive commands. e.g. -d A=B or --define A=B --定義用戶自定義變量 --database <databasename> Specify the database to use -- 指定使用的數據庫 -e <quoted-query-string> SQL from command line -- 執行指定的 SQL -f <filename> SQL from files --執行 SQL 腳本 -H,--help Print help information -- 打印幫助信息 --hiveconf <property=value> Use value for given property --自定義配置 --hivevar <key=value> Variable subsitution to apply to hive --自定義變量 commands. e.g. --hivevar A=B -i <filename> Initialization SQL file --在進入交互模式以前運行初始化腳本 -S,--silent Silent mode in interactive shell --靜默模式 -v,--verbose Verbose mode (echo executed SQL to the console) --詳細模式
直接使用 Hive
命令,不加任何參數,便可進入交互式命令行。git
在不進入交互式命令行的狀況下,可使用 hive -e
執行 SQL 命令。github
hive -e 'select * from emp';
用於執行的 sql 腳本能夠在本地文件系統,也能夠在 HDFS 上。sql
# 本地文件系統 hive -f /usr/file/simple.sql; # HDFS文件系統 hive -f hdfs://hadoop001:8020/tmp/simple.sql;
其中 simple.sql
內容以下:shell
select * from emp;
可使用 --hiveconf
設置 Hive 運行時的變量。數據庫
hive -e 'select * from emp' \ --hiveconf hive.exec.scratchdir=/tmp/hive_scratch \ --hiveconf mapred.reduce.tasks=4;
hive.exec.scratchdir:指定 HDFS 上目錄位置,用於存儲不一樣 map/reduce 階段的執行計劃和這些階段的中間輸出結果。apache
使用 -i
能夠在進入交互模式以前運行初始化腳本,至關於指定配置文件啓動。編程
hive -i /usr/file/hive-init.conf;
其中 hive-init.conf
的內容以下:服務器
set hive.exec.mode.local.auto = true;
hive.exec.mode.local.auto 默認值爲 false,這裏設置爲 true ,表明開啓本地模式。session
--define <key=value>
和 --hivevar <key=value>
在功能上是等價的,都是用來實現自定義變量,這裏給出一個示例:
定義變量:
hive --define n=ename --hiveconf --hivevar j=job;
在查詢中引用自定義變量:
# 如下兩條語句等價 hive > select ${n} from emp; hive > select ${hivevar:n} from emp; # 如下兩條語句等價 hive > select ${j} from emp; hive > select ${hivevar:j} from emp;
結果以下:
Hive 內置了 HiveServer 和 HiveServer2 服務,二者都容許客戶端使用多種編程語言進行鏈接,可是 HiveServer 不能處理多個客戶端的併發請求,因此產生了 HiveServer2。
HiveServer2(HS2)容許遠程客戶端可使用各類編程語言向 Hive 提交請求並檢索結果,支持多客戶端併發訪問和身份驗證。HS2 是由多個服務組成的單個進程,其包括基於 Thrift 的 Hive 服務(TCP 或 HTTP)和用於 Web UI 的 Jetty Web 服務器。
HiveServer2 擁有本身的 CLI(Beeline),Beeline 是一個基於 SQLLine 的 JDBC 客戶端。因爲 HiveServer2 是 Hive 開發維護的重點 (Hive0.15 後就再也不支持 hiveserver),因此 Hive CLI 已經不推薦使用了,官方更加推薦使用 Beeline。
Beeline 擁有更多可以使用參數,可使用 beeline --help
查看,完整參數以下:
Usage: java org.apache.hive.cli.beeline.BeeLine -u <database url> the JDBC URL to connect to -r reconnect to last saved connect url (in conjunction with !save) -n <username> the username to connect as -p <password> the password to connect as -d <driver class> the driver class to use -i <init file> script file for initialization -e <query> query that should be executed -f <exec file> script file that should be executed -w (or) --password-file <password file> the password file to read password from --hiveconf property=value Use value for given property --hivevar name=value hive variable name and value This is Hive specific settings in which variables can be set at session level and referenced in Hive commands or queries. --property-file=<property-file> the file to read connection properties (url, driver, user, password) from --color=[true/false] control whether color is used for display --showHeader=[true/false] show column names in query results --headerInterval=ROWS; the interval between which heades are displayed --fastConnect=[true/false] skip building table/column list for tab-completion --autoCommit=[true/false] enable/disable automatic transaction commit --verbose=[true/false] show verbose error messages and debug info --showWarnings=[true/false] display connection warnings --showNestedErrs=[true/false] display nested errors --numberFormat=[pattern] format numbers using DecimalFormat pattern --force=[true/false] continue running script even after errors --maxWidth=MAXWIDTH the maximum width of the terminal --maxColumnWidth=MAXCOLWIDTH the maximum width to use when displaying columns --silent=[true/false] be more silent --autosave=[true/false] automatically save preferences --outputformat=[table/vertical/csv2/tsv2/dsv/csv/tsv] format mode for result display --incrementalBufferRows=NUMROWS the number of rows to buffer when printing rows on stdout, defaults to 1000; only applicable if --incremental=true and --outputformat=table --truncateTable=[true/false] truncate table column when it exceeds length --delimiterForDSV=DELIMITER specify the delimiter for delimiter-separated values output format (default: |) --isolation=LEVEL set the transaction isolation level --nullemptystring=[true/false] set to true to get historic behavior of printing null as empty string --maxHistoryRows=MAXHISTORYROWS The maximum number of rows to store beeline history. --convertBinaryArrayToString=[true/false] display binary column data as string or as byte array --help display this message
在 Hive CLI 中支持的參數,Beeline 都支持,經常使用的參數以下。更多參數說明能夠參見官方文檔 Beeline Command Options
參數 | 說明 |
---|---|
-u <database URL> | 數據庫地址 |
-n <username> | 用戶名 |
-p <password> | 密碼 |
-d <driver class> | 驅動 (可選) |
-e <query> | 執行 SQL 命令 |
-f <file> | 執行 SQL 腳本 |
-i (or)--init <file or files> | 在進入交互模式以前運行初始化腳本 |
--property-file <file> | 指定配置文件 |
--hiveconf property=value | 指定配置屬性 |
--hivevar name=value | 用戶自定義屬性,在會話級別有效 |
示例: 使用用戶名和密碼鏈接 Hive
$ beeline -u jdbc:hive2://localhost:10000 -n username -p password
能夠經過三種方式對 Hive 的相關屬性進行配置,分別介紹以下:
方式一爲使用配置文件,使用配置文件指定的配置是永久有效的。Hive 有如下三個可選的配置文件:
hive-site.xml :Hive 的主要配置文件;
hiveserver2-site.xml:關於 HiveServer2 的配置。
示例以下,在 hive-site.xml 配置 hive.exec.scratchdir
:
<property> <name>hive.exec.scratchdir</name> <value>/tmp/mydir</value> <description>Scratch space for Hive jobs</description> </property>
方式二爲在啓動命令行 (Hive CLI / Beeline) 的時候使用 --hiveconf
指定配置,這種方式指定的配置做用於整個 Session。
hive --hiveconf hive.exec.scratchdir=/tmp/mydir
方式三爲在交互式環境下 (Hive CLI / Beeline),使用 set 命令指定。這種設置的做用範圍也是 Session 級別的,配置對於執行該命令後的全部命令生效。set 兼具設置參數和查看參數的功能。以下:
0: jdbc:hive2://hadoop001:10000> set hive.exec.scratchdir=/tmp/mydir; No rows affected (0.025 seconds) 0: jdbc:hive2://hadoop001:10000> set hive.exec.scratchdir; +----------------------------------+--+ | set | +----------------------------------+--+ | hive.exec.scratchdir=/tmp/mydir | +----------------------------------+--+
配置的優先順序以下 (由低到高):
hive-site.xml
- >hivemetastore-site.xml
- > hiveserver2-site.xml
- >-- hiveconf
- > set
Hive 可選的配置參數很是多,在用到時查閱官方文檔便可AdminManual Configuration
更多大數據系列文章能夠參見 GitHub 開源項目: 大數據入門指南