Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ) 教案 5 教學(xué)設(shè)計(jì) Hadoop大數(shù)據(jù)倉(cāng)庫(kù)工具Hive_第1頁(yè)
Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ) 教案 5 教學(xué)設(shè)計(jì) Hadoop大數(shù)據(jù)倉(cāng)庫(kù)工具Hive_第2頁(yè)
Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ) 教案 5 教學(xué)設(shè)計(jì) Hadoop大數(shù)據(jù)倉(cāng)庫(kù)工具Hive_第3頁(yè)
Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ) 教案 5 教學(xué)設(shè)計(jì) Hadoop大數(shù)據(jù)倉(cāng)庫(kù)工具Hive_第4頁(yè)
Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ) 教案 5 教學(xué)設(shè)計(jì) Hadoop大數(shù)據(jù)倉(cāng)庫(kù)工具Hive_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

課程名稱:Hadoop大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ)

章節(jié)名稱:Hadoop大數(shù)據(jù)倉(cāng)庫(kù)工具Hive

北京智酷道捷教育科技有限公司

年月

目錄

一、基本說(shuō)明...................................................................2

二、教學(xué)目標(biāo)...................................................................2

三、教學(xué)重點(diǎn)...................................................................2

四、教學(xué)難點(diǎn)....................................................................3

五、教學(xué)方法....................................................................3

六、教學(xué)準(zhǔn)備....................................................................3

七、教學(xué)過(guò)程....................................................................3

八、板書(shū)削..................................................................17

九、教具......................................................................18

十、教學(xué)反思..................................................................18

一、基本說(shuō)明

1.授課班級(jí):

2.授課人數(shù):

3.教學(xué)時(shí)間:

4.課時(shí):6課時(shí)

5.課型:理論+實(shí)踐

二、教學(xué)目標(biāo)

1.知識(shí)與技能

>通過(guò)學(xué)習(xí)本課程,學(xué)生能夠理解Hive的組件架構(gòu)和體系結(jié)構(gòu)。

>通過(guò)學(xué)習(xí)本課程,學(xué)生能夠掌握Hive表的創(chuàng)建和相關(guān)操作。

>通過(guò)學(xué)習(xí)本課程,學(xué)生能夠掌握分區(qū)表和分桶技術(shù)的使用。

2.過(guò)程與方法

>通過(guò)學(xué)習(xí)本課程并完成相關(guān)練習(xí),學(xué)生能夠熟練搭建Hive及其各個(gè)組件。

>通過(guò)學(xué)習(xí)本課程并完成相關(guān)練習(xí),學(xué)生能夠掌握自定義函數(shù)UDF的編寫(xiě)。

3.情感、態(tài)度、價(jià)值觀

>通過(guò)探究學(xué)習(xí)Hive的組件架構(gòu)和體系結(jié)構(gòu),并掌握Hive的安裝配置及Hive表的

相關(guān)操作,學(xué)生可以對(duì)Hadoop大數(shù)據(jù)倉(cāng)庫(kù)工具Hive形成整體認(rèn)識(shí),進(jìn)一步了解

它分析存儲(chǔ)在Hadoop中的大規(guī)模數(shù)據(jù),并進(jìn)行ETL操作(提取、轉(zhuǎn)化、加載)的

原理及應(yīng)用。

三、教學(xué)重點(diǎn)

>Hive表的操作案例演示。

>Hive表的操作案例練習(xí)。

AHive函數(shù)。

AUDF開(kāi)發(fā)案例演示。

>UDF案例編程練習(xí)。

四、教學(xué)難點(diǎn)

>無(wú)。

五、教學(xué)方法

>邊講邊練+實(shí)戰(zhàn)演練:首先老師可以邊講邊練的方式對(duì)Hive進(jìn)行整體介紹,并介紹

Hive的安裝配置、Hive表的相關(guān)操作及Hive自定義函數(shù)的編寫(xiě)。最后,老師可以

通過(guò)兩個(gè)案例直觀演示Hive表的操作和UDF的開(kāi)發(fā),讓大家能夠掌握Hadoop大

數(shù)據(jù)倉(cāng)庫(kù)工具Hive的使用。

六、教學(xué)準(zhǔn)備

1.學(xué)生準(zhǔn)備

>注冊(cè)道捷實(shí)訓(xùn)云賬號(hào)并開(kāi)通會(huì)員。

>虛擬機(jī)軟件vmware。

>IDEA開(kāi)發(fā)工具。

2.教師準(zhǔn)備

>注冊(cè)道捷實(shí)訓(xùn)云賬號(hào)并開(kāi)通會(huì)員。

>虛擬機(jī)軟件vmware。

>IDEA開(kāi)發(fā)工具。

七、教學(xué)過(guò)程

1,導(dǎo)入新課

(1)回顧上節(jié)課內(nèi)容并答疑解惑

回顧上一節(jié)課的內(nèi)容,并對(duì)上一節(jié)課布置的作業(yè)以及學(xué)生提出的問(wèn)題進(jìn)行答疑解惑。

(2)進(jìn)入主題,展開(kāi)詳細(xì)講解

本節(jié)課分為4部分,第1部分對(duì)Hive進(jìn)行了整體介紹,包括Hive的概念、Hive與關(guān)

系型數(shù)據(jù)庫(kù)的異同、Hive的組件以及體系結(jié)構(gòu)等,讓我們能夠?qū)ive技術(shù)有一個(gè)宏觀的了

解。第2部分介紹了Hive的安裝配置,包括Hive的安裝流程和各個(gè)組件的詳細(xì)配置情況,

以便為后面的學(xué)習(xí)和應(yīng)用打好基礎(chǔ)。第3部分介紹了Hive表的相關(guān)操作,包括一些優(yōu)化的

技術(shù)、分區(qū)表和分桶技術(shù)等,并通過(guò)具體實(shí)例對(duì)Hive表的操作進(jìn)行了演示。第4部分介紹

了Hive自定義函數(shù)的編寫(xiě),也通過(guò)具體的UDF開(kāi)發(fā)案例進(jìn)行了演示。

(3)明確學(xué)習(xí)目標(biāo)

>理解Hive的組件架構(gòu)和體系結(jié)構(gòu)。

>能夠熟練搭建Hive及其各個(gè)組件。

>掌握Hive表的創(chuàng)建和相關(guān)操作。

>掌握分區(qū)表和分桶技術(shù)的使用。

>掌握自定義函數(shù)UDF的編寫(xiě)。

2.講授課程

(1)Hive介紹

本節(jié)課我們學(xué)習(xí)Hadoop大數(shù)據(jù)倉(cāng)庫(kù)工具Hive,首先要了解其概念、組件、體系結(jié)構(gòu)

以及應(yīng)用等。

1)什么是Hive

定義:

Hive是基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù)工具,可以用來(lái)對(duì)存儲(chǔ)在Hadoop中的大規(guī)模數(shù)據(jù)

進(jìn)行ETL操作(提取、轉(zhuǎn)化、加載)。

起源:

?MapReduce實(shí)現(xiàn)復(fù)雜查詢邏輯開(kāi)發(fā)難度太大

?為了讓熟悉SQL但編程技能相對(duì)比較薄弱的分析人員可對(duì)存儲(chǔ)在HDFS中的大數(shù)據(jù)

集進(jìn)行查詢分析。

主要功能:

可以將結(jié)構(gòu)化、半結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供類SQL查詢功能

2)Hive與關(guān)系型數(shù)據(jù)庫(kù)的差異

區(qū)別Hive關(guān)系型數(shù)據(jù)庫(kù)

查詢語(yǔ)言HQLSQL

數(shù)據(jù)存儲(chǔ)位置HDFS本地文件系統(tǒng)

數(shù)據(jù)格式判斷查詢時(shí)判斷插入時(shí)判斷

執(zhí)行MRExecutor

執(zhí)行延遲高低

處理數(shù)據(jù)規(guī)模大小

3)Hive組件總體框圖

4)Hive的體系結(jié)構(gòu)

HiveclientsHiveservicesHive存1諸和計(jì)算

5)Hive的應(yīng)用

一是數(shù)據(jù)倉(cāng)庫(kù)ETL任務(wù),當(dāng)然這個(gè)數(shù)據(jù)倉(cāng)庫(kù)是指大數(shù)據(jù)的數(shù)據(jù)倉(cāng)庫(kù);

二是對(duì)網(wǎng)站日志的分析,因?yàn)楝F(xiàn)在互聯(lián)網(wǎng)公司非常多,互聯(lián)網(wǎng)的訪問(wèn)數(shù)據(jù)量也非常大,

所以也需要通過(guò)Hive進(jìn)行數(shù)據(jù)分析;

三是海量數(shù)據(jù)的離線分析,也就是只要適合MapReduce工作的場(chǎng)景,一般Hive都會(huì)

適用。

(2)Hive的安裝配置

1)安裝Hive

第一步,確定Hive的版本。因?yàn)镠ive是在Hadoop上使用的,所以Hive的版本需

要與當(dāng)前使用的Hadoop版本匹配。

第二步,解壓安裝包。下載匹配的Hive版本后要解壓安裝包,解壓命令為tarxzf

apache-hive-x.y.z-bin.tar.gzo

第三步,設(shè)置環(huán)境變量。首先配置HIVE_HOME環(huán)境變量為exportHIVE_HOME={$

裝目錄路徑};然后將HIVE_HOME下的bin目錄配置到PATH目錄下,具體為export

PATH=$PATH:$HIVE_HOME/bino

2)元數(shù)據(jù)庫(kù)設(shè)置

?屬性設(shè)置

屬性名稱類型默認(rèn)值描述

hive.metastore.warehouse.dirURI/user/hive/warehouse托管表存儲(chǔ)位置

逗號(hào)分隔如受未設(shè)定廁使用

hive.metastore.uris的URI未設(shè)定當(dāng)前的metastore

jdbc:derby:;database

javax.jdo.option.ConnectionURLURImetastore數(shù)據(jù)庫(kù)

Name=metastore_db;

的JDBCURL

create=true

org.apache.derbty.jdbJDBC驅(qū)動(dòng)器的類

javax.jdo.option.ConnectionDriverName字符串

c.EmbeddedDriver名

javax.jdo.option.ConnectionUserName字符串略JDBC用戶名

javax.jdo.option.ConnectionPassword字符串略JDBC密碼

?三種配置方式

Embedded

metastore

LocalHiveServiceJVM

metastore

DriveraMetastore

HiveServiceJVM

Driver>Metastore

RemoteHiveServiceJVM

metastore

第一種方式Embeddedmetastore,即嵌入式元數(shù)據(jù)的方式,使用derby的默認(rèn)方

式,在執(zhí)行腳本的當(dāng)前目錄下查找元數(shù)據(jù)庫(kù)信息。

第二種方式是Localmetastore,即本地模式,這種方式需要配置一個(gè)單獨(dú)的元數(shù)據(jù)庫(kù),

通常這個(gè)數(shù)據(jù)庫(kù)會(huì)采用MySQL,然后在Hive的配置文件中配置相應(yīng)的元數(shù)據(jù)庫(kù)信息。

第三種方式Remotemetastore即遠(yuǎn)程服務(wù)器的方式。這種方式也需要有一個(gè)MySQL

數(shù)據(jù)庫(kù)來(lái)充當(dāng)元數(shù)據(jù)庫(kù),然后需要額外在集群中的一臺(tái)機(jī)器上配置元數(shù)據(jù)庫(kù)的配置信息。

?元數(shù)據(jù)庫(kù)Server配置

在Hive服務(wù)器端通過(guò)hive-servicemetastore命令啟動(dòng)元數(shù)據(jù)庫(kù)服務(wù),其他充當(dāng)

Hive客戶端的機(jī)器上在hive-site.xml文件中配置hive.metastore.uris,即配置元數(shù)據(jù)庫(kù)

服務(wù)器的連接地址。然后通過(guò)ThriftRPC協(xié)議訪問(wèn)這個(gè)元數(shù)據(jù)庫(kù)的信息。

HiveCU

MetaStoreMetaStoreServerMySQL

Client(Thrift)

Server

3)關(guān)于HiveWebInterface

HiveWebInterface組件簡(jiǎn)稱HWI,是指通過(guò)瀏覽器以圖形化的方式來(lái)使用Hive。

HiveWebInterface組件只在Hive2.2.0之前版本可用,目前在Hive2.3版本已被棄用,

棄用的原因是Hive官方認(rèn)為這個(gè)組件使用的人數(shù)比較少,維護(hù)該組件的意義不大,所以就

取消了這個(gè)組件。

4)配置使用Hcatalog

?配置Hcatalog

酉己置hcat_server.sh:

位于{$HIVE_HOME}/hcatalog/sbin/

exportHCAT_LOG_DIR={目錄路徑}

啟動(dòng)hcatalog服務(wù):

{$HIVE_HOME}/hcatalog/sbin/hcat_server.shstart

停止hcatalog服務(wù):

{$HIVE_HOME}/hcatalog/sbin/hcat_server.shstop

?HCatalog組件的優(yōu)點(diǎn)

?使用HCatalog有助于與其他工具的集成,并為Pig、Hive和MapReduce提供讀

寫(xiě)接口訪問(wèn)元數(shù)據(jù)信息。

?HCatalog還提供了Restful接口,方便用于外部數(shù)據(jù)的訪問(wèn)。

?HCatalog還與Sqoop框架進(jìn)行了集成,Sqoop是一種用于Hadoop和關(guān)系型數(shù)

據(jù)庫(kù)之間傳輸數(shù)據(jù)的工具。

?WebHCat組件

WebHCat組件的使用方法如下。

啟動(dòng)WebHCat服務(wù):{$HIVE_HOME}/hcatalog/sbin/webhcat_server.shstart

通瀏覽器訪問(wèn)測(cè)試:http:〃{主機(jī)名}:50111/templeton/vl/status

可以通過(guò)如下所示的圖來(lái)了解WebHCat組件的工作流程。

?HCatalog組件的應(yīng)用

?打開(kāi)Linux客戶端工具,通過(guò)netstat-na|grep9083命令查看一下9083端口是

否開(kāi)啟。

?通過(guò)hcat_server.sh腳本開(kāi)啟HCatalog服務(wù)。這里需要對(duì)該腳本進(jìn)行適當(dāng)?shù)木庉?

可以輸入vihcat_server.sh命令,按下Enter鍵,在該腳本中添加一句話:export

HCAT_LOG_DIR=opt/apache-hive-2.3.6-bin/hcatalog/logso

?輸入.hcat_server.shstart命令,按下Enter鍵,啟動(dòng)成功。

5)配置hiveserver2和beeline

啟動(dòng)hiveserver2服務(wù):

{$HIVE_H0ME}/bin/hiveserver2

使用beeline:

{$HIVE_HOME}/bin/beeline-ujdbc:hive2:〃{主機(jī)名}:10000

酉己置hadoop中的core-site.xml:

設(shè)置代理用戶root在hadoop中的執(zhí)行權(quán)限。

(3)Hive表的操作

1)Hive表的類型

Hive表分為四種類型,分別是內(nèi)部表、外部表、分區(qū)表和分桶表,下面分別講解其特

點(diǎn)。

內(nèi)部表指的是使用命令創(chuàng)建表之后需要通過(guò)一些腳本語(yǔ)句加載數(shù)據(jù)文件到表中,這樣才

能查到數(shù)據(jù)。當(dāng)刪除表的時(shí)候除了會(huì)將表的定義從元數(shù)據(jù)中刪除之外,還會(huì)把表的數(shù)據(jù)一并

刪除,所以在內(nèi)部表中表的數(shù)據(jù)是受Hive本身控制的,因此內(nèi)部表又稱為受控表。

外部表是指當(dāng)創(chuàng)建表的時(shí)候數(shù)據(jù)文件已經(jīng)存在,創(chuàng)建表的時(shí)候只需要指定數(shù)據(jù)文件的路

徑就可以把數(shù)據(jù)從表中查詢出來(lái),當(dāng)刪除表的時(shí)候并不會(huì)刪除關(guān)聯(lián)的數(shù)據(jù)文件。外部表通常

會(huì)用在數(shù)據(jù)共享的場(chǎng)合。

分區(qū)表是指當(dāng)單表的數(shù)據(jù)量非常大的時(shí)候,可以通過(guò)一個(gè)分區(qū)字段或者多個(gè)分區(qū)字段對(duì)

數(shù)據(jù)進(jìn)行分區(qū)存儲(chǔ),并且指定的分區(qū)字段值不相同的話,對(duì)應(yīng)的記錄就會(huì)存儲(chǔ)在不同的目錄

下,這樣可以提高查詢的性能。

分桶表是指對(duì)數(shù)據(jù)進(jìn)行更細(xì)粒度的劃分,可以按照某列屬性值的Hash值對(duì)數(shù)據(jù)進(jìn)行區(qū)

分。分桶表一般是和分區(qū)表配合使用的,主要用在數(shù)據(jù)抽樣和表關(guān)聯(lián)查詢的場(chǎng)合。

2)Hive的數(shù)據(jù)類型

?Hive的基本數(shù)據(jù)類型

數(shù)據(jù)類型所占字節(jié)

TINYINTlbyte,-128-127

SMALLINT2byte,-32,768-32,767

INT4byte,-2,147,483,648-2,147,483,647

BIGINT8byte,-9,223,372,036,854,775,808~9,223,372,036,854,775,807

BOOLEAN

FLOAT

DOUBLE

STRING

BINARY

TIMESTAMP

DECIMAL

CHAR

VARCHAR

DATE

?Hive的復(fù)雜數(shù)據(jù)類型

除了常用的基本數(shù)據(jù)類型之外,Hive還提供了一些復(fù)雜數(shù)據(jù)類型加array類型、m叩

類型、struct類型、union類型等。

3)Hive基本建表語(yǔ)句

CREATE[EXTERNAL]table[表名]

([列名列數(shù)據(jù)類型,.…])

ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'

STOREDASTEXTFILE

[LOCATIONhdfs_path]

createexternaltableifnotexistsemployee__external(

namestring,

workplacearray<string>>

sex_agestruct<sex:string,age:int>,

skills_scoremap<string,int>,

depart_titlemap<string,array<string>>

)

rowformatdelimited

fieldsterminatedby*|*

collectionitemsterminatedby

mapkeysterminatedby*:*

storedastextfile

location■/temp/dat“employee?

4)Hive表加載數(shù)據(jù)

建表完成后需要將數(shù)據(jù)加載到Hive表,Hive提供了loaddata語(yǔ)句和insert語(yǔ)句進(jìn)

行數(shù)據(jù)加載操作。loaddata語(yǔ)句可以將數(shù)據(jù)從本地文件系統(tǒng)中加載到Hive表中,也就是

Hive的數(shù)據(jù)是存儲(chǔ)在分布式文件系統(tǒng)中的,同時(shí)它也可以將分布式文件系統(tǒng)中的數(shù)據(jù)加載

到Hive表對(duì)應(yīng)的目錄下。insert語(yǔ)句能夠進(jìn)行單行數(shù)據(jù)的插入和結(jié)果集數(shù)據(jù)的插入,并且

還可以做數(shù)據(jù)的導(dǎo)出工作。

5)Hive表的基本操作

?創(chuàng)建表并查詢數(shù)據(jù)

通過(guò)createtableperson(idint,namestring)rowformatdelimitedfields

terminatedby'\t'storedastextfile;語(yǔ)句來(lái)創(chuàng)建表。

輸入select*fromperson;命令可以查詢表。

?導(dǎo)入數(shù)據(jù)

?使用loaddata語(yǔ)句導(dǎo)入數(shù)據(jù)

通過(guò)loaddatalocalinpath,file:///opt/testdata/person.txt,overwriteinto

tableperson;語(yǔ)句導(dǎo)入數(shù)據(jù)。

使用insert語(yǔ)句導(dǎo)入數(shù)據(jù)

輸入insertintoperson(id,name)values(3,,wangwu');命令導(dǎo)入數(shù)據(jù)。

?使用hdfs命令導(dǎo)入數(shù)據(jù)

Hive表下的數(shù)據(jù)文件除了通過(guò)loaddata等語(yǔ)句進(jìn)行導(dǎo)入外,使用hdfs相關(guān)的命令將

數(shù)據(jù)文件放到Hive表的目錄下同樣能夠?qū)崿F(xiàn)數(shù)據(jù)導(dǎo)入的效果。

?導(dǎo)出數(shù)據(jù)

通過(guò)insertoverwrite語(yǔ)句能實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)出操作。

?復(fù)雜數(shù)據(jù)類型的使用

首先需要準(zhǔn)備一張名為student的表,建表信息如下:

CREATETABLEstudent(

idINT,

nameSTRING,

ageINT,

favARRAY<STRING>,

addrMAP<STRING,STRING>,

contactsSTRUCT<mobile:STRING,maikSTRING,qq:String>

)

ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'

COLLECTIONITEMSTERMINATEDBY'-'

MAPKEYSTERMINATEDBY

STOREDASTEXTFILE;

導(dǎo)入數(shù)據(jù)如下:

1lisi18study-game-driverstd_addr:beijing-work_addr:shanghai

lllll-test@163.com-3435455

以上就是復(fù)雜數(shù)據(jù)類型的建表語(yǔ)句和數(shù)據(jù)格式。

?Hive修改表結(jié)構(gòu)

修改Hive表結(jié)構(gòu)主要有以下三種方式:

?重命名表:ALTERTABLE表名RENAMETOnew_table_name;

?改變列名/類型:ALTERTABLE表名CHANGEcol_old_namecol_new_name

column_type;

?增加/更新列:ALTERTABLE表名ADD|REPLACECOLUMNS(col_name

datatype[CONMMENTcol_comment],...);

?Hive的CRUD操作總結(jié)

Hive支持select語(yǔ)句進(jìn)行查詢;可以通過(guò)insertinto語(yǔ)句、insertoverwrite語(yǔ)句和

loaddata語(yǔ)句進(jìn)行插入操作;至于數(shù)據(jù)的更新和刪除,只能在支持ACID的表上執(zhí)行,對(duì)

此目前我們可以理解為Hive不支持對(duì)數(shù)據(jù)的更新和刪除,后續(xù)在學(xué)習(xí)到ACID的時(shí)候再去

使用這兩個(gè)功能。

6)Hive分區(qū)表

分區(qū)表的作用:當(dāng)數(shù)據(jù)量比較大的時(shí)候一般通過(guò)建表指定分區(qū)字段,讓數(shù)據(jù)根據(jù)分區(qū)分

開(kāi)存儲(chǔ),不同分區(qū)的數(shù)據(jù)會(huì)存儲(chǔ)在不同的目錄下,這樣在查詢的時(shí)候就不用做全表掃描,根

據(jù)當(dāng)前查詢的數(shù)據(jù)分區(qū)去特定的目錄下掃描數(shù)據(jù)即可,能夠加快數(shù)據(jù)查詢的速度。在指定分

區(qū)字段的時(shí)候可以指定多個(gè),這樣可以形成多級(jí)分區(qū)的效果。

?Hive分區(qū)表建表語(yǔ)句

分區(qū)表建表語(yǔ)句與普通建表的方式大致相同,主要是通過(guò)PARTITIONEDBY(province

STRING)語(yǔ)句指定一個(gè)分區(qū)字段就可以了,完整命令行如下:

CREATETABLEperson(

idINT,

nameSTRING)

PARTITIONEDBY(provinceSTRING)

ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'

STOREDASTEXTFILE;

?Hive分區(qū)表示例

我們通過(guò)實(shí)例來(lái)體驗(yàn)一下Hive分區(qū)表的具體操作。

7)數(shù)據(jù)分桶

Hive還提供了一種建表的優(yōu)化方式,即數(shù)據(jù)分桶。數(shù)據(jù)分桶主要是利用建表時(shí)提供一

個(gè)分桶字段,這個(gè)分桶字段會(huì)與分桶的數(shù)量做模運(yùn)算,按照模運(yùn)算的值相同的數(shù)據(jù)進(jìn)行同一

個(gè)分區(qū)。

數(shù)據(jù)分桶的作用主要表現(xiàn)在兩方面,首先是方便抽樣,數(shù)據(jù)經(jīng)過(guò)模運(yùn)算之后可以將相同

的值取出來(lái)做一個(gè)桶的數(shù)據(jù),這樣就可以做一些抽樣的效果;其次可以提高join直詢效率,

由于數(shù)據(jù)分桶之后可以按照桶識(shí)別數(shù)據(jù),如果這個(gè)分桶字段在關(guān)聯(lián)的時(shí)候值相同,就會(huì)到特

定的分桶上去找關(guān)聯(lián)的數(shù)據(jù),這樣兩表所有的數(shù)據(jù)不會(huì)做完整的笛卡爾積,從而能夠大大縮

減直詢時(shí)間。

可以通過(guò)如下所示的分桶語(yǔ)句來(lái)創(chuàng)建分桶表:

CLUSTEREDBY('分桶字段INTO{分桶數(shù)量}BUCKETS

(4)Hive自定義函數(shù)

Hive自帶了一些函數(shù),可以使用在SQL語(yǔ)句中,但這些函數(shù)的數(shù)量是有限的,不能完

全滿足我們的業(yè)務(wù)需求,所以Hive也提供了自定義函數(shù)擴(kuò)展的功能.

1)Hive函數(shù)

Hive的自定義函數(shù)可以簡(jiǎn)寫(xiě)為UDF(user-definedfunction),即用戶自定義函數(shù)的

簡(jiǎn)稱。用戶自定義函數(shù)包含UDF、UDAF和UDTF三種方式。

2)UDF開(kāi)發(fā)步驟

在創(chuàng)建一個(gè)項(xiàng)目之后,實(shí)現(xiàn)org.apache.hadoop.hive.ql.UDF的子類代碼,然后在子

類里面實(shí)現(xiàn)evaluate函數(shù)就完成UDF的開(kāi)發(fā)了。

這個(gè)函數(shù)開(kāi)發(fā)完成之后要進(jìn)行打包操作,然后將jar包上傳到Hive的服務(wù)器節(jié)點(diǎn),再

通過(guò)addjarlinuxjar_path命令將jar包添加到Hive的環(huán)境中,然后再通過(guò)create

[temporary]function[dbname]function_nameASclass_name創(chuàng)建函數(shù),這樣就可以

在具體的Server上使用該函數(shù)了。

3)UDF開(kāi)發(fā)案例演示

通過(guò)一個(gè)具體的案例來(lái)演示UDF的開(kāi)發(fā)過(guò)程。在該案例中我們要開(kāi)發(fā)一個(gè)hell。。函數(shù),

該函數(shù)的功能是在一個(gè)字段前面添加hello前綴。

3.鞏固練習(xí)

(1)Hive安裝配置練習(xí)。

要求:

基于Hadoop2.x高可用集群。

(2)Hive表的操作案例練習(xí)。

要求:

1)常用數(shù)據(jù)類型和建表。

2)數(shù)據(jù)導(dǎo)入導(dǎo)出。

3)復(fù)雜數(shù)據(jù)類型和建表。

4)修改表結(jié)構(gòu)。

5)CRUD操作。

6)分區(qū)分桶表。

(3)UDF案例編程練習(xí)。

要求:

1)編寫(xiě)hello()函數(shù)。

2)在Hive下應(yīng)用編寫(xiě)的hell。。函數(shù)。

4.課堂小結(jié)

本節(jié)課從Hive的組件架構(gòu)和體系結(jié)構(gòu)入手,對(duì)Hive形成整體認(rèn)識(shí)。然后進(jìn)行了Hive

2.3.6版本的配置安裝,并對(duì)元數(shù)據(jù)服務(wù)、HCatalog服務(wù),以及基于HCatalog的WebHCat、

hiveserver2和beeline組件的搭建進(jìn)行了詳細(xì)講解。然后又介紹了各種表的操作和練習(xí),

包括基本數(shù)據(jù)類型、復(fù)雜數(shù)據(jù)類型、建表語(yǔ)句,以及使用loaddata和insert語(yǔ)句將數(shù)據(jù)

導(dǎo)入到表,還介紹了分區(qū)和分桶技術(shù)的使用.最后編寫(xiě)了UDF函數(shù),并進(jìn)行了測(cè)試應(yīng)用。

5.布置作業(yè)

(1)課下作業(yè)

編寫(xiě)一個(gè)UDF函數(shù),實(shí)現(xiàn)將輸出的字符串進(jìn)行反轉(zhuǎn)輸出。

(2)預(yù)習(xí)作業(yè)

了解Hive的UDAF和UDTF函數(shù)的編寫(xiě)。

八、板書(shū)設(shè)計(jì)

Hadoop大數(shù)據(jù)倉(cāng)庫(kù)工具Hive

L

一(―)什么是Hive

一、課程目標(biāo)

(-)Hive與關(guān)系型數(shù)據(jù)庫(kù)的差異

Hive介紹一(三)Hive組件總體框圖

(四)Hive的體系結(jié)構(gòu)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論