Hive命令行接口(CLI)提供了執行Hive QL、設置參數等功能,要啓用CLI只須要在命令行下執行$HIVE_HOME/bin/hive命令。在命令下執行hive –H能夠查看CLI選項,以下表所示:shell
-d,--define <key=value>數據庫 |
應用於Hive命令的變量替換,如-d A=B或者--define A=B緩存 |
--database <databasename>服務器 |
指定所使用的數據庫分佈式 |
-e <quoted-query-string>oop |
執行命令行指定SQL學習 |
-f <filename>ui |
執行文件中的SQLspa |
-H,--help命令行 |
打印幫助信息 |
-h <hostname> |
鏈接遠程主機上的Hive服務器 |
--hiveconf <property=value> |
使用給定變量的值 |
--hivevar <key=value> |
應用於Hive命令的變量替換,如--hivevar A=B |
-i <filename> |
初始化SQL文件 |
-p <port> |
在指定端口上鍊接Hive服務器 |
-S,--silent |
在交互式shell下啓動Silent模式 |
-v,--verbose |
Verbose模式,在控制檯回顯執行的SQL |
當使用參數-e或者-f時,hive以batch模式執行SQL語句,當hive不帶-e或者-f時,hive進入交互式模式。下面先看一些batch模式的例子,而後再學習交互式模式下的一些命令。
1. 第一個例子是在命令行下執行SQL語句。
[hadoop@hadoop ~]$ hive -e 'show tables' Logging initialized using configuration injar:file:/home/hadoop/hive-0.13.0/lib/hive-common-0.13.0.jar!/hive-log4j.properties OK page_view pokes Time taken: 1.619 seconds, Fetched: 2 row(s)
2. 第二個例子是在Silent模式下將數據轉儲到指定的文件中。
[hadoop@hadoop~]$ hive -S -e 'show tables' > a.txt [hadoop@hadoop~]$ cat a.txt page_view pokes
當hive不帶-e或者-f時,hive進入交互式模式,在交互式模式下使用分號終止命令的輸入,開始執行命令,腳本中的命令能夠使用--前綴指定。交互模式下的常見命令以下表所示:
命令 |
描述 |
quit |
使用quit或者exit命令離開交互模式。 |
reset |
重置配置參數爲默認值 |
set <key>=<value> |
設置配置參數爲指定的值,注意若是拼錯參數名,CLI不提示錯誤。 |
set |
打印被覆蓋默認值的參數。 |
set -v |
打印全部Hadoop和Hive的配置參數。 |
add FILE[S] <filepath> <filepath>* |
添加一個或者多個文件、jar或者歸檔到分佈式緩存中的資源列表中。 |
list FILE[S] |
列出已經添加到分佈式緩存中的資源。 |
list FILE[S] <filepath>* |
檢查指定的資源是否已經添加到分佈式緩存中。 |
delete FILE[S] <filepath>* |
刪除分佈式緩存中的資源。 |
! <command> |
在CLI中執行shell命令。 |
dfs <dfs command> |
在CLI中執行HDFS命令。 |
<query string> |
執行Hive語句並打印結果到標準輸出。 |
source FILE <filepath> |
在CLI中執行腳本文件。 |
下面是上述命令的一下例子:
hive> setmapred.reduce.tasks=32; hive> setmapred.reduce.tasks; mapred.reduce.tasks=32 hive> dfs -ls/user/hive/; Found 1 items drwxr-xr-x - hadoop supergroup 0 2014-05-23 16:43/user/hive/warehouse hive> select* from page_view; OK Time taken: 8.06seconds hive> listfiles; /home/hadoop/a.txt hive> reset; hive> setmapred.reduce.tasks; mapred.reduce.tasks=-1
上面提到的add、list、delete命令分別向分佈式緩存添加、列出和刪除普通文件、jar文件和歸檔文件,那這些文件有什麼用途呢?這些文件做爲會話的額外資源在查詢執行時能夠使用,任何本地可訪問的文件均可以添加到會話中。一旦文件被加入到會話中,Hive查詢能夠經過文件資源的名稱引用它(在map/reduce/transform子句中)而且在執行時該資源文件在整個Hadoop集羣上都是本地可用的。Hive在查詢執行時使用Hadoop的分佈式緩存將資源分佈到集羣中的全部機器上。
普通文件資源一般是像轉換腳本一類的文件,該類型的文件僅僅被加入到分佈式緩存中。JAR文件也會加入到classpath中,這就要求依次引用包含諸如UDF的對象。歸檔文件在分佈時自動解壓縮。