溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hadoop中的Hive的介紹和應(yīng)用

發(fā)布時間:2020-06-08 09:46:53 來源:億速云 閱讀:675 作者:Leah 欄目:大數(shù)據(jù)

本文以Hadoop中的Hive工具為例,為大家分析Hive的核心概念和架構(gòu)原理以及Hive的應(yīng)用。閱讀完整文相信大家對Hadoop中的Hive有了一定的認識。

1、    Hive核心概念和架構(gòu)原理

1.1、 Hive概念

Hive由FaceBook開發(fā),用于解決海量結(jié)構(gòu)化日志的數(shù)據(jù)統(tǒng)計。

Hive是基于Hadoop的數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化數(shù)據(jù)映射為一張表,提供類似SQL語句查詢功能

本質(zhì):將Hive SQL轉(zhuǎn)化成MapReduce程序。

1.2、Hive與數(shù)據(jù)庫的區(qū)別

對變項Hive數(shù)據(jù)庫軟件
查詢語言HQLSQL
數(shù)據(jù)存儲HDFSRaw Devce or  Loal FS
執(zhí)行器MapReduceExecutor
數(shù)據(jù)插入支持批量導(dǎo)入/單條插入支持單條或者批量導(dǎo)入
數(shù)據(jù)操作覆蓋追加行級更新刪除
處理數(shù)據(jù)規(guī)模
執(zhí)行延遲
分區(qū)支持支持
索引0.8版本之后加入了索引支持復(fù)雜的索引
擴展性有限
數(shù)據(jù)加載模式讀時模式(快)寫時模式(慢)
應(yīng)用場景海量數(shù)據(jù)查詢實時查詢

讀時模式:Hive在加載數(shù)據(jù)到表中的時候不會校驗.

寫時模式:Mysql數(shù)據(jù)庫插入數(shù)據(jù)到表的時候會進行校驗.

總結(jié):Hive只適合用來做海量離線的數(shù)據(jù)統(tǒng)計分析,也就是數(shù)據(jù)倉庫。

1.3、Hive的優(yōu)缺點

優(yōu)點:操作接口采用了類SQL語法,提供快速開發(fā)的能力,避免了去寫MapReduce;Hive還支持用戶自定義函數(shù),用戶可以根據(jù)自己的需求實現(xiàn)自己的函數(shù)。

缺點:Hive不支持紀錄級別的增刪改操作;Hive查詢延遲很嚴重;Hive不支持事務(wù)。

1.4、Hive架構(gòu)原理

Hadoop中的Hive的介紹和應(yīng)用

(1)用戶接口:CLI(hive shell);JDBC(java訪問Hive);WEBUI(瀏覽器訪問Hive)

(2)元數(shù)據(jù):MetaStore

元數(shù)據(jù)包括:表名、表所屬的數(shù)據(jù)庫(默認是default)、表的擁有者、列/分區(qū)字段,標的類型(表是否為外部表)、表的數(shù)據(jù)所在目錄。這是數(shù)據(jù)默認存儲在Hive自帶的derby數(shù)據(jù)庫中,推薦使用MySQL數(shù)據(jù)庫存儲MetaStore。

(3)Hadoop集群:

使用HDFS進行存儲數(shù)據(jù),使用MapReduce進行計算。

(4)Driver:驅(qū)動器

解析器(SQL Parser):將SQL字符串換成抽象語法樹AST,對AST進行語法分析,像是表是否存在、字段是否存在、SQL語義是否有誤。

編譯器(Physical Plan):將AST編譯成邏輯執(zhí)行計劃。

優(yōu)化器(Query Optimizer):將邏輯計劃進行優(yōu)化。

執(zhí)行器(Execution):把執(zhí)行計劃轉(zhuǎn)換成可以運行的物理計劃。對于Hive來說默認就是Mapreduce任務(wù)。

通過Hive**對數(shù)據(jù)進行數(shù)據(jù)分析過程**:

Hadoop中的Hive的介紹和應(yīng)用

2、    Hive交互方式

需要先啟動hadoop集群和MySQL服務(wù)

2.1、Hive交互shell

cd  /opt/bigdata2.7/hive (hive的安裝路徑,根據(jù)自己實際情況改變)
bin/hive

Hadoop中的Hive的介紹和應(yīng)用

可以在命令端口寫上HQL語句:show databases;驗證是否可用。

2.2、JDBC交互

輸入hiveserver2相當于開啟了一個服務(wù)端,查看hivesever2的轉(zhuǎn)態(tài)

Hadoop中的Hive的介紹和應(yīng)用

輸入netstat  –nlp命令查看:

Hadoop中的Hive的介紹和應(yīng)用

運行hiveserver2相當于開啟了一個服務(wù)端,端口號10000,需要開啟一個客戶端進行通信,所以打開另一個窗口,輸入命令beeline.

Hadoop中的Hive的介紹和應(yīng)用

Beeline連接方式:!connect jdbc:hive2://node1:10000

主意不要省略!

當然了hiveserver2服務(wù)端可以運行在后臺:

nohup hiveserver2 &

3、    Hive數(shù)據(jù)類型

3.1基本數(shù)據(jù)類型

類型名稱描述舉例
booleanTrue/falseTrue
tinyint1字節(jié)的有符號整數(shù)1
Smallint2字節(jié)的有符號整數(shù)1
int4字節(jié)的有符號整數(shù)1
Bigint8字節(jié)的有符號整數(shù)1
Float4字節(jié)精度浮點數(shù)1.0
Double8字節(jié)精度浮點數(shù)1.0
String字符串(不設(shè)長度)“adcadfaf”
Varchar字符串(1-65355)“adfafdafaf”
Timestamp時間戳123454566
date日期20160202

3.2復(fù)合數(shù)據(jù)類型

類型名稱描述舉例
Array一組有序的字段,字段類型必須相同的array(元素1,元素2)Array(1,2,4)
Map一組無序的鍵值對map(k1,v1,k2,v2)Map(‘a(chǎn)’,1,’b’,2)
Struct一組命名的字段,字段類型可以不同struct(元素1,元素2)Struct(‘a(chǎn)’,1,2,0)

(1)Array字段的元素訪問方式:下標獲取元素,下標從0開始

比如:獲取第一元素:array[0]

(2)Map字段的訪問方式:通過鍵獲取值

比如:獲取a這個key對應(yīng)的value:map[‘a(chǎn)’]

(3)struct字段的元素獲取方式:

定義一個字段c的類型為struct(a int;b string)

獲取a和b的值:

create table complex(
     col1 array<int>,
     col2 map<string,int>,
     col3 struct<a:string,b:int,c:double>
     )

4、    Hive數(shù)據(jù)類型轉(zhuǎn)換

4.1、隱式類型轉(zhuǎn)換

系統(tǒng)自動實現(xiàn)類型轉(zhuǎn)換,不需要客戶干預(yù)

如:tinyint可以轉(zhuǎn)換成int,int可以轉(zhuǎn)成bigint

所有整數(shù)類型、float、string類型都可以隱式轉(zhuǎn)轉(zhuǎn)換成double

tinyint、samllint、int都可以轉(zhuǎn)成float

boolean不可以轉(zhuǎn)成其他任何類型

4.2、手動類型轉(zhuǎn)換

可以使用cast函數(shù)顯示的進行數(shù)據(jù)類型轉(zhuǎn)換

例如:cast(‘1’ as int)把字符串’1’轉(zhuǎn)成整數(shù)1

如果強制轉(zhuǎn)換類型失敗,如執(zhí)行cast(‘x’ as int)表達式返回NULL。

看完上述內(nèi)容,你們對Hadoop中的Hive工具大概了解了嗎?如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI