Hive學習之Hive CLI

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 
exit

使用quit或者exit命令離開交互模式。

reset

重置配置參數爲默認值

set <key>=<value>

設置配置參數爲指定的值,注意若是拼錯參數名,CLI不提示錯誤。

set

打印被覆蓋默認值的參數。

set -v

打印全部Hadoop和Hive的配置參數。

add FILE[S] <filepath> <filepath>* 
add JAR[S] <filepath> <filepath>* 
add ARCHIVE[S] <filepath> <filepath>*

添加一個或者多個文件、jar或者歸檔到分佈式緩存中的資源列表中。

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>

在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的對象。歸檔文件在分佈時自動解壓縮。

相關文章
相關標籤/搜索