hadoop之旅8-centerOS7 : Hive的基本操作

爾以發表於2018-11-04

通過hadoop之旅7-centerOS7 : Hive環境搭建相信搭建已經在自己的虛擬機器上搭建好了hive的環境,今天帶大家熟悉一下hive的基本使用

hive指令碼的三種執行方式

  1. hive -e 'sql'
  2. hive -f 'sql.file'
  3. 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檢視錶結構

hadoop之旅8-centerOS7 : Hive的基本操作

匯入資料

本地或者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'
複製程式碼

hadoop之旅8-centerOS7 : Hive的基本操作
到這裡資料我們已經匯入進去了。那這個時候可能就會有人問,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作業

hadoop之旅8-centerOS7 : Hive的基本操作

登入web頁面檢視mapreduce作業,開啟http://master:8088可以看到

hadoop之旅8-centerOS7 : Hive的基本操作
在此處顯示其實一個mapreduce作業已經執行了起來。

通過hive,我們就不用再寫MapReduce作業了,可以直接將資料匯入到hive中,通過sql來做離線資料分析。當然hive還有很多強大的地方大家可以詳細去學習瞭解

相關文章