通過hadoop之旅7-centerOS7 : Hive環境搭建相信搭建已經在自己的虛擬機器上搭建好了hive的環境,今天帶大家熟悉一下hive的基本使用
hive指令碼的三種執行方式
- hive -e 'sql'
- hive -f 'sql.file'
- hive jdbc 程式碼執行指令碼
通過這三種方式可以不用進入hive的命令列,接下來介紹命令列裡處理hive操作
首先
啟動hive服務,進入hive的bin目錄下,執行開服務的命令
[root@master bin]# ./hive --service metastore &
複製程式碼
接著執行hive命令,進入hive本地命令列模式
[root@master bin]# ./hive
複製程式碼
建庫
接下來建立資料庫mmcc
,並使用該資料庫
hive>create database mmcc;
hive>use mmcc;
複製程式碼
建表
然後我們就可以進行建表操作,現在建一張普通的人員表
create table if not exists person(
name String,
age String
)
comment '這是註釋'
row format delimited //進行格式化限制
fields terminated by ',' //表示匯入時,行欄位按‘,’隔開
lines terminated by '\n' //表示行終止符按\n來算,即遇到回車就算下一行
stored as textfile; //表示最終匯入的資料以檔案形式儲存
複製程式碼
檢視錶結構
然後可以通過desc person
檢視錶結構
匯入資料
在本地或者hdfs準備好一個檔案,本文演示本地匯入資料到hive,裡面的內容就是person
的資訊
vi /home/mmcc/input.txt
hello,java
hello,world
hello,c++
hello,java
hello,c#
複製程式碼
接下來我們演示如何匯入資料,匯入資料的語法是:
load data [local] inpath 'path' [overwrite] into table xxxx;
[root@master mmcc]# ./hive-2.3.3/bin/hive -e 'load data local inpath "/home/mmcc/input.txt" into table person'
複製程式碼
如果是hdfs上的檔案只需要去掉local
,把path換成遠端hdfs路徑即可
接下來就可以通過sql語句進行查詢操作了
[root@master mmcc]# ./hive-2.3.3/bin/hive -e 'select * from person'
複製程式碼
到這裡資料我們已經匯入進去了。那這個時候可能就會有人問,hive不是把sql轉換成mapreduce嗎?為什麼我執行 selec * from person
很快就出來了。這是因為這個語句只是把存在檔案裡的內容輸出而已,不過會生成mapreduce作業。接下來我們可以做一下條件查詢,比如統計一共有多少個人,語法和sql一樣。
[root@master mmcc]# ./hive-2.3.3/bin/hive -e 'select count(1) from person'
複製程式碼
接下來大家就會發現,這條sql被轉換成了一個mapreduce作業
登入web頁面檢視mapreduce作業,開啟http://master:8088
可以看到
在此處顯示其實一個mapreduce作業已經執行了起來。
通過hive,我們就不用再寫MapReduce作業了,可以直接將資料匯入到hive中,通過sql來做離線資料分析。當然hive還有很多強大的地方大家可以詳細去學習瞭解