版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單元6數(shù)據(jù)倉庫Hive學(xué)習(xí)目標(biāo)知識目標(biāo)技能目標(biāo)1.了解Hive架構(gòu)。2.了解Hive的3種部署模式。3.了解Hive命令使用規(guī)范。4.了解Hive中的數(shù)據(jù)類型。5.掌握Hive數(shù)據(jù)定義命令。6.了解Hive數(shù)據(jù)操作規(guī)范。7.掌握Hive數(shù)據(jù)查詢的各種運(yùn)用。8.理解Hive視圖與查詢的區(qū)別9.掌握常用Hive函數(shù)的應(yīng)用1.學(xué)會安裝與配置MySQL。2.學(xué)會部署Hive環(huán)境。3.能靈活運(yùn)用MySQL和Hive。4.能靈活運(yùn)用Hive數(shù)據(jù)操作命令。5.學(xué)會用Hive數(shù)據(jù)查詢的各種命令解決實(shí)際問題。6.能靈活運(yùn)用Hive視圖。7.學(xué)會用Hive函數(shù)進(jìn)行數(shù)據(jù)分析單元任務(wù)任務(wù)6.1Hive架構(gòu)和部署模式
任務(wù)6.2安裝并配置MySQL任務(wù)6.3Hive環(huán)境安裝與配置
任務(wù)6.4Hive在數(shù)據(jù)處理中的應(yīng)用任務(wù)6.5Hive在貸款數(shù)據(jù)分析中的應(yīng)用
(1)Hive架構(gòu)。(2)內(nèi)嵌模式。(3)本地模式。(4)遠(yuǎn)程模式。(5)Hive和傳統(tǒng)數(shù)據(jù)庫的區(qū)別。要用大數(shù)據(jù)技術(shù)進(jìn)行數(shù)據(jù)分析,就要使用數(shù)據(jù)倉庫Hive,而Hive必須安裝在Hadoop大數(shù)據(jù)處理平臺上。本任務(wù)介紹Hive架構(gòu)和它的3種部署模式、Hive和傳統(tǒng)數(shù)據(jù)庫的區(qū)別,使讀者在簡單了解Hive架構(gòu)的基礎(chǔ)上,學(xué)會安裝Hive。【任務(wù)描述】【關(guān)鍵步驟】任務(wù)6.1Hive架構(gòu)和部署模式
任務(wù)6.1Hive架構(gòu)和部署模式
6.1.1Hive架構(gòu)6.1.2內(nèi)嵌模式6.1.3本地模式6.1.4遠(yuǎn)程模式6.1.5Hive和傳統(tǒng)數(shù)據(jù)庫的區(qū)別6.1.1Hive架構(gòu)Hive在架構(gòu)上并不是分布式的,它被設(shè)計(jì)成獨(dú)立于Hadoop集群之外,可以將它看成Hadoop的客戶端,它能夠?qū)iveQL轉(zhuǎn)化成MapReduce作業(yè)在Hadoop中執(zhí)行。注意:|有些HiveQL語句不能特化成MapReduce作業(yè),如下面的查詢語句:select*fromuser;Hive只會從DataNode將數(shù)據(jù)獲取到之后,按照順序依次輸出。用戶接口模塊:包括CLI、HWI、JDBC、ODBC、ThriftServer等。CLI是Hive自帶的一個(gè)命令行界面;HWI是Hive的一個(gè)簡單網(wǎng)頁界面;JDBC、ODBC以及ThriftServer可以向用戶提供進(jìn)行編程訪問的接口。驅(qū)動模塊:包括編譯器、優(yōu)化器、執(zhí)行器等。所有命令和查詢都會進(jìn)入到驅(qū)動模塊,通過該模塊對輸入進(jìn)行解析編譯,對需求的計(jì)算進(jìn)行優(yōu)化,然后按照指定的步驟進(jìn)行執(zhí)行。元數(shù)據(jù)存儲模塊(Metastore):是一個(gè)獨(dú)立的關(guān)系型數(shù)據(jù)庫。通常是與MySQL數(shù)據(jù)庫連接后創(chuàng)建的一個(gè)MySQL實(shí)例,也可以是Hive自帶的derby數(shù)據(jù)庫實(shí)例。元數(shù)據(jù)存儲模塊中主要保存表模式和其他系統(tǒng)元數(shù)據(jù),如表的名稱、表的列及其屬性、表的分區(qū)及其屬性、表的屬性、表中數(shù)據(jù)所在位置信息等。6.1.1Hive架構(gòu)任務(wù)6.1Hive架構(gòu)和部署模式
6.1.1Hive架構(gòu)6.1.2內(nèi)嵌模式6.1.3本地模式6.1.4遠(yuǎn)程模式6.1.5Hive和傳統(tǒng)數(shù)據(jù)庫的區(qū)別內(nèi)嵌模式是Hive安裝部署中最簡單的一種模式。Hive的元數(shù)據(jù)信息和Hive服務(wù)運(yùn)行在同一個(gè)JVM實(shí)例中,Hive存儲元數(shù)據(jù)信息使用的是內(nèi)嵌的Deby數(shù)據(jù)庫。這種模式只能支持最多一個(gè)用戶打開Hive會話進(jìn)行數(shù)據(jù)操作。Hive服務(wù)和元數(shù)據(jù)服務(wù)運(yùn)行在同一個(gè)JVM實(shí)例中的,Hive服務(wù)通過元數(shù)據(jù)服務(wù)向Derby數(shù)據(jù)庫存儲元數(shù)據(jù)信息。6.1.2內(nèi)嵌模式任務(wù)6.1Hive架構(gòu)和部署模式
6.1.1Hive架構(gòu)6.1.2內(nèi)嵌模式6.1.3本地模式6.1.4遠(yuǎn)程模式6.1.5Hive和傳統(tǒng)數(shù)據(jù)庫的區(qū)別Hive服務(wù)和元數(shù)據(jù)服務(wù)運(yùn)行在同一個(gè)JVM實(shí)例中,存儲元數(shù)據(jù)的數(shù)據(jù)庫被獨(dú)立出來,外部數(shù)據(jù)庫可以是MySQL,PostgreSQL,Oracle數(shù)據(jù)庫等。多個(gè)JVM實(shí)例中運(yùn)行的多個(gè)Hive服務(wù)和元數(shù)據(jù)服務(wù)可以連接同一個(gè)存儲元數(shù)據(jù)信息的外部數(shù)據(jù)庫。6.1.3本地模式
在Hive的本地模式中,Hive服務(wù)和元數(shù)據(jù)服務(wù)運(yùn)行在同一個(gè)JVM實(shí)例中,使用外置的數(shù)據(jù)庫如MySQL或PostgreSQL等數(shù)據(jù)庫作為存儲元數(shù)據(jù)的數(shù)據(jù)庫。任務(wù)6.1Hive架構(gòu)和部署模式
6.1.1Hive架構(gòu)6.1.2內(nèi)嵌模式6.1.3本地模式6.1.4遠(yuǎn)程模式6.1.5Hive和傳統(tǒng)數(shù)據(jù)庫的區(qū)別6.1.4遠(yuǎn)程模式
在Hive的遠(yuǎn)程模式中,Hive服務(wù)和元數(shù)據(jù)服務(wù)分別運(yùn)行在不同的JVM實(shí)例中,多個(gè)Hive服務(wù)和元數(shù)據(jù)服務(wù)之間可以交叉訪問。同時(shí),存儲元數(shù)據(jù)的外部數(shù)據(jù)庫可以部署到遠(yuǎn)程服務(wù)器上,由防火墻等安全防護(hù)進(jìn)程提供安全保障。
在遠(yuǎn)程模式下,Hive服務(wù)和元數(shù)據(jù)服務(wù)運(yùn)行在不同的進(jìn)程內(nèi)。此時(shí),數(shù)據(jù)庫服務(wù)可以放置到遠(yuǎn)程的某臺服務(wù)器上,同時(shí)可以將數(shù)據(jù)庫放置在防火墻等安全隔離服務(wù)的背后,增強(qiáng)了數(shù)據(jù)庫服務(wù)的安全性。Hive的遠(yuǎn)程模式如圖所示。任務(wù)6.1Hive架構(gòu)和部署模式
6.1.1Hive架構(gòu)6.1.2內(nèi)嵌模式6.1.3本地模式6.1.4遠(yuǎn)程模式6.1.5Hive和傳統(tǒng)數(shù)據(jù)庫的區(qū)別6.1.5Hive和傳統(tǒng)數(shù)據(jù)庫的區(qū)別
Hive的底層邏輯依賴的是HDFS和MapReduce,在很多方面有別于傳統(tǒng)數(shù)據(jù)庫。Hive采用了SQL的查詢語言HiveQL,因此很容易將Hive理解為數(shù)據(jù)庫。其實(shí)從結(jié)構(gòu)上來看,Hive和傳統(tǒng)數(shù)據(jù)庫除了擁有類似的查詢語言,再無類似之處。兩者的區(qū)別如表6.1.1所示。6.1.5Hive和傳統(tǒng)數(shù)據(jù)庫的區(qū)別(1)查詢語言。SQL被廣泛地應(yīng)用在數(shù)據(jù)倉庫中,開發(fā)者專門針對Hive的特性設(shè)計(jì)了類SQL的查詢語言HiveQL。熟悉SQL開發(fā)的開發(fā)者可以很方便地使用Hive進(jìn)行開發(fā)。(2)數(shù)據(jù)存儲位置。Hive建立Hadoop之上,所有Hive的數(shù)據(jù)都是存儲在HDFS中的。而數(shù)據(jù)庫則可以將數(shù)據(jù)保存在塊設(shè)備或者本地文件系統(tǒng)中。(3)數(shù)據(jù)格式。Hive中沒有定義專門的數(shù)據(jù)格式,數(shù)據(jù)格式可以由用戶指定,用戶定義數(shù)據(jù)格式需要指定三個(gè)屬性:列分隔符(通常為空格、”\t”、”\x001”)、行分隔符(”\n”)以及讀取文件數(shù)據(jù)的方法。Hive加載數(shù)據(jù)時(shí)將數(shù)據(jù)內(nèi)容復(fù)制或者移動到相應(yīng)的HDFS目錄中。而在數(shù)據(jù)庫中,不同的數(shù)據(jù)庫有不同的存儲引擎,定義了自己的數(shù)據(jù)格式。所有數(shù)據(jù)都會按照一定的組織存儲,因此,數(shù)據(jù)庫加載數(shù)據(jù)的過程會比較耗時(shí)。(4)數(shù)據(jù)更新。Hive中不支持對數(shù)據(jù)的改寫和添加,所有的數(shù)據(jù)都是在加載的時(shí)候確定好的。而數(shù)據(jù)庫中的數(shù)據(jù)通常是需要經(jīng)常進(jìn)行修改的6.1.5Hive和傳統(tǒng)數(shù)據(jù)庫的區(qū)別(5)索引。Hive在加載數(shù)據(jù)的過程中不會對數(shù)據(jù)進(jìn)行任何處理。Hive要訪問數(shù)據(jù)中滿足條件的特定值時(shí),需要暴力掃描整個(gè)數(shù)據(jù),因此訪問延遲較高。數(shù)據(jù)庫中,通常會針對一個(gè)或者幾個(gè)列建立索引,對于少量的特定條件的數(shù)據(jù)的訪問,數(shù)據(jù)庫可以有很高的效率,較低的延遲。由于數(shù)據(jù)的訪問延遲較高,決定了Hive不適合在線數(shù)據(jù)查詢。(6)執(zhí)行。Hive中大多數(shù)查詢的執(zhí)行是通過Hadoop提供的MapReduce來實(shí)現(xiàn)的。而數(shù)據(jù)庫通常有自己的執(zhí)行引擎。(7)執(zhí)行延遲。MapReduce本身具有較高的延遲,因此在利用MapReduce執(zhí)行Hive查詢時(shí),也會有較高的延遲。數(shù)據(jù)庫的執(zhí)行延遲較低。當(dāng)然,這個(gè)低是有條件的,即數(shù)據(jù)規(guī)模較小,當(dāng)數(shù)據(jù)規(guī)模大到超過數(shù)據(jù)庫的處理能力時(shí),Hive的并行計(jì)算將體現(xiàn)出優(yōu)勢。(8)可擴(kuò)展性。Hive的可擴(kuò)展性和Hadoop的可擴(kuò)展性是一致的。而數(shù)據(jù)庫由于ACID語義的嚴(yán)格限制,擴(kuò)展行非常有限。(9)數(shù)據(jù)規(guī)模。Hive建立在集群上并可以利用MapReduce進(jìn)行并行計(jì)算,支持很大規(guī)模的數(shù)據(jù)。數(shù)據(jù)庫可以支持的數(shù)據(jù)規(guī)模較小。(1)修改CentOS-Base.repo配置文件。(2)查看系統(tǒng)中是否已安裝MySQL。(3)卸載之前已安裝的MySQL軟件包。
(4)下載并安裝自動下載工具wget。(5)下載MySQL安裝包。
(6)安裝MySQL。(7)安裝MySQL服務(wù)。
(8)啟動MySQL。(9)修改MySQL臨時(shí)密碼。
(10)允許遠(yuǎn)程訪問。(11)修改root用戶權(quán)限允許其訪問任何主機(jī)。Hive中的元數(shù)據(jù)通常存儲在關(guān)系數(shù)據(jù)庫中。本任務(wù)詳細(xì)介紹MySQL的安裝與配置過程,首先通過獲取臨時(shí)密碼登錄MySQL,再重新設(shè)置新密碼和用戶root的權(quán)限,創(chuàng)建數(shù)據(jù)庫,為與Hive建立連接做好準(zhǔn)備?!救蝿?wù)描述】【關(guān)鍵步驟】任務(wù)6.2安裝并配置MySQL數(shù)據(jù)庫
任務(wù)6.2安裝并配置MySQL數(shù)據(jù)庫
6.2.1修改CentOS-Base.repo配置文件6.2.2查看系統(tǒng)中是否已安裝MySQL6.2.3卸載之前已安裝的MySQL軟件包6.2.4下載并安裝自動下載工具wget6.2.5下載MySQL安裝包6.2.6安裝MySQL6.2.7安裝MySQL服務(wù)6.2.8啟動MySQL6.2.9修改MySQL臨時(shí)密碼6.2.10允許遠(yuǎn)程訪問6.2.11修改root用戶權(quán)限允許其訪問任何主機(jī)6.2.1修改CentOS-Base.repo配置文件vi/etc/yum.repos.d/CentOS-Base.repoCentOS-Base.repo是CentOS操作系統(tǒng)中的一個(gè)配置文件,用于定義軟件包的存儲庫打開CentOS-Base.repo文件,命令如下:把原有的[base]下面的內(nèi)容全部刪除,并用以下內(nèi)容替換:[base]name=CentOS-$releasever
-
Base
-
baseurl=/centos/$releasever/os/$basearch/gpgcheck=1gpgkey=/centos/RPM-GPG-KEY-CentOS-7[updates]name=CentOS-$releasever
-
Updates
-
baseurl=/centos/$releasever/updates/$basearch/gpgcheck=1gpgkey=/centos/RPM-GPG-KEY-CentOS-7[extras]name=CentOS-$releasever
-
Extras
-
baseurl=/centos/$releasever/extras/$basearch/gpgcheck=1gpgkey=/centos/RPM-GPG-KEY-CentOS-7[centosplus]name=CentOS-$releasever
-
Plus
-
baseurl=/centos/$releasever/centosplus/$basearch/gpgcheck=1enabled=0gpgkey=/centos/RPM-GPG-KEY-CentOS-7
保存文件并退出。6.2.1修改CentOS-Base.repo配置文件yum
clean
allyum
makecacheyum
update隨后執(zhí)行以下命令:任務(wù)6.2安裝并配置MySQL數(shù)據(jù)庫
6.2.1修改CentOS-Base.repo配置文件6.2.2查看系統(tǒng)中是否已安裝MySQL6.2.3卸載之前已安裝的MySQL軟件包6.2.4下載并安裝自動下載工具wget6.2.5下載MySQL安裝包6.2.6安裝MySQL6.2.7安裝MySQL服務(wù)6.2.8啟動MySQL6.2.9修改MySQL臨時(shí)密碼6.2.10允許遠(yuǎn)程訪問6.2.11修改root用戶權(quán)限允許其訪問任何主機(jī)6.2.2查看系統(tǒng)中是否已安裝MySQL若之前已安裝過MySQL,執(zhí)行以下命令:
Linux系統(tǒng)默認(rèn)安裝了Mariadb數(shù)據(jù)庫,用戶可以使用以下命令來檢查系統(tǒng)是否已安裝MariaDB或MySQL。如果系統(tǒng)安裝了MySQL或MariaDB,這些命令將列出相關(guān)的軟件包;如果沒有列出任何內(nèi)容,表示系統(tǒng)上沒有安裝MySQL或MariaDB。rpm-qa|grepmariadb#檢查系統(tǒng)是否已安裝MariaDBrpm-qa|grepmysql#檢查系統(tǒng)是否已安裝MySQLrpm-qa|grepmysql由圖可見,系統(tǒng)中已安裝了MariaDB,沒有安裝MySQL。任務(wù)6.2安裝并配置MySQL數(shù)據(jù)庫
6.2.1修改CentOS-Base.repo配置文件6.2.2查看系統(tǒng)中是否已安裝MySQL6.2.3卸載之前已安裝的MySQL軟件包6.2.4下載并安裝自動下載工具wget6.2.5下載MySQL安裝包6.2.6安裝MySQL6.2.7安裝MySQL服務(wù)6.2.8啟動MySQL6.2.9修改MySQL臨時(shí)密碼6.2.10允許遠(yuǎn)程訪問6.2.11修改root用戶權(quán)限允許其訪問任何主機(jī)若已安裝了圖6.2.2所示的所有軟件包,則要逐條刪除,命令如下:rpm-e--nodepsmysql-community-client-5.7.44-1.el7.x86_64rpm-e--nodepsmysql57-community-release-el7-8.noarchrpm-e--nodepsmysql-community-libs-5.7.44-1.el7.x86_64rpm-e--nodepsmysql-community-common-5.7.44-1.el7.x86_64rpm-e--nodepsmysql-community-server-5.7.44-1.el7.x86_64運(yùn)行結(jié)果如圖6.2.3所示。6.2.3卸載之前已安裝的MySQL軟件包如果之前安裝過MySQL,就要卸載已安裝的MySQL版本;如果之前沒安裝過MySQL,可省略這一步。任務(wù)6.2安裝并配置MySQL數(shù)據(jù)庫
6.2.1修改CentOS-Base.repo配置文件6.2.2查看系統(tǒng)中是否已安裝MySQL6.2.3卸載之前已安裝的MySQL軟件包6.2.4下載并安裝自動下載工具wget6.2.5下載MySQL安裝包6.2.6安裝MySQL6.2.7安裝MySQL服務(wù)6.2.8啟動MySQL6.2.9修改MySQL臨時(shí)密碼6.2.10允許遠(yuǎn)程訪問6.2.11修改root用戶權(quán)限允許其訪問任何主機(jī)6.2.4下載并安裝自動下載工具wgetwget是一個(gè)能從網(wǎng)絡(luò)上自動下載文件的自由工具,支持通過HTTP、HTTPS、FTP三個(gè)最常見的TCP/IP協(xié)議下載。“wget”這個(gè)名稱來源于“WorldWideWeb”與“get”的結(jié)合。所謂自動下載,是指wget可以在用戶退出系統(tǒng)之后在后臺繼續(xù)執(zhí)行,直到下載任務(wù)完成。安裝wget的命令如下:yum-yinstallwget運(yùn)行結(jié)果如圖6.2.4所示任務(wù)6.2安裝并配置MySQL數(shù)據(jù)庫
6.2.1修改CentOS-Base.repo配置文件6.2.2查看系統(tǒng)中是否已安裝MySQL6.2.3卸載之前已安裝的MySQL軟件包6.2.4下載并安裝自動下載工具wget6.2.5下載MySQL安裝包6.2.6安裝MySQL6.2.7安裝MySQL服務(wù)6.2.8啟動MySQL6.2.9修改MySQL臨時(shí)密碼6.2.10允許遠(yuǎn)程訪問6.2.11修改root用戶權(quán)限允許其訪問任何主機(jī)下載MySQL安裝包的代碼如下:6.2.5下載MySQL安裝包/get/mysql57-community-release-el7-8.noarch.rpm在Centos7中下載命令如下:wget/get/mysql57-community-release-el7-8.noarch.rpm任務(wù)6.2安裝并配置MySQL數(shù)據(jù)庫
6.2.1修改CentOS-Base.repo配置文件6.2.2查看系統(tǒng)中是否已安裝MySQL6.2.3卸載之前已安裝的MySQL軟件包6.2.4下載并安裝自動下載工具wget6.2.5下載MySQL安裝包6.2.6安裝MySQL6.2.7安裝MySQL服務(wù)6.2.8啟動MySQL6.2.9修改MySQL臨時(shí)密碼6.2.10允許遠(yuǎn)程訪問6.2.11修改root用戶權(quán)限允許其訪問任何主機(jī)用rpm下載并安裝MySQL,命令如下:運(yùn)行結(jié)果如圖6.2.6所示。rpm-ivhmysql57-community-release-el7-8.noarch.rpm6.2.6下載MySQL安裝包任務(wù)6.2安裝并配置MySQL數(shù)據(jù)庫
6.2.1修改CentOS-Base.repo配置文件6.2.2查看系統(tǒng)中是否已安裝MySQL6.2.3卸載之前已安裝的MySQL軟件包6.2.4下載并安裝自動下載工具wget6.2.5下載MySQL安裝包6.2.6安裝MySQL6.2.7安裝MySQL服務(wù)6.2.8啟動MySQL6.2.9修改MySQL臨時(shí)密碼6.2.10允許遠(yuǎn)程訪問6.2.11修改root用戶權(quán)限允許其訪問任何主機(jī)6.2.7安裝MySQL服務(wù)
Linux服務(wù)器安裝成功后,經(jīng)常使用yum安裝rpm包以滿足使用的需要。安裝完Linux服務(wù)器后,默認(rèn)“/etc/yum.repos.d/”目錄下已經(jīng)有*.repo文件,只要Linux服務(wù)器可以聯(lián)網(wǎng),就可以使用它進(jìn)行rpm包的安裝。進(jìn)入“/etc/yum.repos.d/”目錄,命令如下:
cd/etc/yum.repos.d/
運(yùn)行以下代碼安裝MySQL服務(wù)(這個(gè)過程可能有點(diǎn)慢),命令如下:
yum-yinstallmysql-server
任務(wù)6.2安裝并配置MySQL數(shù)據(jù)庫
6.2.1修改CentOS-Base.repo配置文件6.2.2查看系統(tǒng)中是否已安裝MySQL6.2.3卸載之前已安裝的MySQL軟件包6.2.4下載并安裝自動下載工具wget6.2.5下載MySQL安裝包6.2.6安裝MySQL6.2.7安裝MySQL服務(wù)6.2.8啟動MySQL6.2.9修改MySQL臨時(shí)密碼6.2.10允許遠(yuǎn)程訪問6.2.11修改root用戶權(quán)限允許其訪問任何主機(jī)6.2.8啟動MySQL使用命令啟動MySQL服務(wù),如:確認(rèn)MySQL服務(wù)已正常啟動,并監(jiān)聽相應(yīng)的端口。systemctlstartmysqld任務(wù)6.2安裝并配置MySQL數(shù)據(jù)庫
6.2.1修改CentOS-Base.repo配置文件6.2.2查看系統(tǒng)中是否已安裝MySQL6.2.3卸載之前已安裝的MySQL軟件包6.2.4下載并安裝自動下載工具wget6.2.5下載MySQL安裝包6.2.6安裝MySQL6.2.7安裝MySQL服務(wù)6.2.8啟動MySQL6.2.9修改MySQL臨時(shí)密碼6.2.10允許遠(yuǎn)程訪問6.2.11修改root用戶權(quán)限允許其訪問任何主機(jī)1.在安裝過程中,MySQL可能會為root用戶生成一個(gè)臨時(shí)密碼。2.登錄MySQL,用戶名root,密碼用剛獲取的臨時(shí)密碼為“0DPQYni:dPau”,命令如下:6.2.9修改MySQL臨時(shí)密碼grep'temporarypassword'/var/log/mysqld.log運(yùn)行結(jié)果如圖所示。mysql-uroot-p輸入臨時(shí)密碼“0DPQYni:dPau”,即可登錄MySQL,如圖所示。3.把MySQL的密碼校驗(yàn)強(qiáng)度改為低風(fēng)險(xiǎn),設(shè)置密碼校驗(yàn)強(qiáng)度為低風(fēng)險(xiǎn)的命令如下:setglobalvalidate_password_policy=LOW;運(yùn)行結(jié)果如圖6.2.12所示。4.修改MySQL的密碼長度.設(shè)置MySQL密碼長度的命令如下:setglobalvalidate_password_length=6;運(yùn)行結(jié)果如圖6.2.13所示。6.2.9修改MySQL臨時(shí)密碼5修改MySQL密碼重新設(shè)置一個(gè)MySQL的新密碼“123456”,命令如下:ALTERUSER?root?@?localhost?IDENTIFIEDBY?123456?;運(yùn)行結(jié)果如圖所示。6退出MySQL完成密碼設(shè)置后,退出MySQL,準(zhǔn)備安裝Hive,命令如下:exit;運(yùn)行結(jié)果如圖所示。6.2.9修改MySQL臨時(shí)密碼任務(wù)6.2安裝并配置MySQL數(shù)據(jù)庫
6.2.1修改CentOS-Base.repo配置文件6.2.2查看系統(tǒng)中是否已安裝MySQL6.2.3卸載之前已安裝的MySQL軟件包6.2.4下載并安裝自動下載工具wget6.2.5下載MySQL安裝包6.2.6安裝MySQL6.2.7安裝MySQL服務(wù)6.2.8啟動MySQL6.2.9修改MySQL臨時(shí)密碼6.2.10允許遠(yuǎn)程訪問6.2.11修改root用戶權(quán)限允許其訪問任何主機(jī)6.2.10允許遠(yuǎn)程訪問若要允許遠(yuǎn)程訪問,需要先關(guān)閉CentOS的防火墻,命令如下:systemctldisablefirewalld任務(wù)6.2安裝并配置MySQL數(shù)據(jù)庫
6.2.1修改CentOS-Base.repo配置文件6.2.2查看系統(tǒng)中是否已安裝MySQL6.2.3卸載之前已安裝的MySQL軟件包6.2.4下載并安裝自動下載工具wget6.2.5下載MySQL安裝包6.2.6安裝MySQL6.2.7安裝MySQL服務(wù)6.2.8啟動MySQL6.2.9修改MySQL臨時(shí)密碼6.2.10允許遠(yuǎn)程訪問6.2.11修改root用戶權(quán)限允許其訪問任何主機(jī)1.登錄MySQL,用戶名為root,命令如下:2.切換到MySQL數(shù)據(jù)庫,命令如下:6.2.11
修改MySQL允許任何人連接mysql-uroot-p輸入剛設(shè)置的密碼“123456”,運(yùn)行結(jié)果如圖所示。usemysql;運(yùn)行結(jié)果如圖所示。3.用select語句查看MySQL數(shù)據(jù)庫的表的user,命令如下:4.修改user表中root用戶權(quán)限,允許root用戶訪問任何主機(jī),命令如下:6.2.11
修改MySQL允許任何人連接updateusersetHost=?%?whereUser=?root?;selectHost,Userfromuser;運(yùn)行結(jié)果如圖所示。selectHost,Userfromuser;運(yùn)行結(jié)果如圖所示。從運(yùn)行結(jié)果可以看出root用戶只允許登錄localhost主機(jī),需要修改為允許root用戶訪問任何主機(jī)。5.修改user表中root用戶權(quán)限后,需要刷新權(quán)限,并新建數(shù)據(jù)庫Hive,命令如下:6.退出MySQL回到CentOS命令行,命令如下:exit;6.2.11
修改MySQL允許任何人連接flushprivileges;createdatabasehive;運(yùn)行結(jié)果如圖所示。(1)Hive安裝包準(zhǔn)備。(2)解壓Hive安裝包。(3)設(shè)置Hive環(huán)境變量。(4)完成相關(guān)配置并添加依賴包。(5)初始化MySQL元數(shù)據(jù)庫。(6)啟動Hive并測試是否安裝成功。本任務(wù)詳細(xì)介紹Hive的安裝和配置過程,包括Hive安裝包下載與安裝、Hive環(huán)境變量設(shè)置、添加依賴包、與MySQL建立連接、啟動Hive并測試安裝成功等,為用Hive進(jìn)行數(shù)據(jù)分析作準(zhǔn)備?!救蝿?wù)描述】【關(guān)鍵步驟】任務(wù)6.3Hive環(huán)境安裝與配置
6.3.1準(zhǔn)備Hive安裝包6.3.2解壓縮Hive安裝包6.3.3設(shè)置Hive環(huán)境變量6.3.4完成相關(guān)配置并添加驅(qū)動包6.3.5初始化Hive元數(shù)據(jù)庫6.3.6啟動Hive任務(wù)6.3Hive環(huán)境安裝與配置1.下載Hive安裝包的網(wǎng)址如下:
2.用WinSCP將Hive安裝包apache-hive-2.1.1-bin.tar.gz上傳到CentOS的“/root”6.3.1Hive安裝包準(zhǔn)備/dist/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz打開的下載頁面如圖所示。6.3.1準(zhǔn)備Hive安裝包6.3.2解壓縮Hive安裝包6.3.3設(shè)置Hive環(huán)境變量6.3.4完成相關(guān)配置并添加驅(qū)動包6.3.5初始化Hive元數(shù)據(jù)庫6.3.6啟動Hive任務(wù)6.3Hive環(huán)境安裝與配置1.將Hive安裝包解壓到指定目錄。將master節(jié)點(diǎn)“/root”的Hive安裝包解壓到“/opt/modules”目錄下,操作命令如下:2.重命名解壓后的文件夾。重命名解壓后的文件夾用到的命令如下:6.3.2解壓Hive安裝包c(diǎn)d/roottar-zxvfapache-hive-2.1.1-bin.tar.gz-C/opt/modules運(yùn)行結(jié)果如圖所示。cd/opt/modulesmvapache-hive-2.1.1-bin/hive運(yùn)行結(jié)果如圖所示。6.3.1準(zhǔn)備Hive安裝包6.3.2解壓縮Hive安裝包6.3.3設(shè)置Hive環(huán)境變量6.3.4完成相關(guān)配置并添加驅(qū)動包6.3.5初始化Hive元數(shù)據(jù)庫6.3.6啟動Hive任務(wù)6.3Hive環(huán)境安裝與配置1.修改/etc/profile文件配置環(huán)境變量修改/etc/profile文件配置環(huán)境變量,末尾添加環(huán)境變量,命令如下:2.使環(huán)境變量生效使環(huán)境變量生效的命令如下:6.3.3設(shè)置Hive環(huán)境變量vi/etc/profile運(yùn)行結(jié)果如圖所示。exportHIVE_HOME=/opt/modules/hiveexportPATH=$HIVE_HOME/bin:$PATH命令末尾添加:source/etc/profile運(yùn)行結(jié)果如圖所示3.修改配置文件hive-env.sh先進(jìn)入配置文件目錄,再將配置文件hive-env.sh.template重命名為hive-env.sh,命令如下:修改hive-env.sh,命令如下:6.3.3設(shè)置Hive環(huán)境變量cd/opt/modules/hive/conf/mvhive-env.sh.templatehive-env.sh運(yùn)行結(jié)果如圖所示。vihive-env.sh在末尾添加以下代碼:exportJAVA_HOME=/opt/modules/jdkexportHADOOP_HOME=/opt/modules/hadoopexportHIVE_HOME=/opt/modules/hive運(yùn)行結(jié)果如圖所示。4.jline版本沖突問題客戶端需要和Hadoop通信,所以需要更改Hadoop中jline的版本,即保留一個(gè)高版本的jline-jar包,命令如下:6.3.3設(shè)置Hive環(huán)境變量cp$HIVE_HOME/lib/jline-2.12.jar$HADOOP_HOME/share/hadoop/yarn/lib/6.3.1準(zhǔn)備Hive安裝包6.3.2解壓縮Hive安裝包6.3.3設(shè)置Hive環(huán)境變量6.3.4完成相關(guān)配置并添加驅(qū)動包6.3.5初始化Hive元數(shù)據(jù)庫6.3.6啟動Hive任務(wù)6.3Hive環(huán)境安裝與配置1.驅(qū)動拷貝因?yàn)榉?wù)端需要和MySQL通信,所以服務(wù)端需要將MySQL的依賴包放在Hive的“l(fā)ib”目錄下。mysql-connector-java是MySQL的JDBC驅(qū)動包,用JDBC連接MySQL數(shù)據(jù)庫時(shí)必須使用該jar包,用WinSCP將mysql-connector-java-5.1.48-bin.jar上傳到CentOS的“/root”目錄。
6.3.4完成相關(guān)配置并添加依賴包將MySQL的依賴包復(fù)制到Hive的“l(fā)ib”目錄下,命令如下:cp/root/mysql-connector-java-5.1.48-bin.jar$HIVE_HOME/lib2.修改配置文件hive-site.xml如果$HIVE_HOME/conf下沒有hive-site.xml文件,就將hive-default.xml.template復(fù)制并改名為hive-site.xml,命令如下:<configuration><!--
Hive產(chǎn)生的元數(shù)據(jù)存放位置--><property><name>hive.metastore.warehouse.dir</name><value>/usr/hive_remote/warehouse</value>
</property><!--需要登錄MySQL數(shù)據(jù)庫,創(chuàng)建一個(gè)hive數(shù)據(jù)庫備用--><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value></property><!--安裝MySQL數(shù)據(jù)庫的驅(qū)動類--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><!--安裝MySQL數(shù)據(jù)庫用戶名稱--><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><!--安裝MySQL數(shù)據(jù)庫的密碼--><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value></property><!--cli顯示表頭和列名--><property><name>hive.cli.print.header</name><value>true</value></property><property><name>hive.cli.print.current.db</name><value>true</value></property></configuration>
6.3.4完成相關(guān)配置并添加依賴包c(diǎn)d$HIVE_HOME/confcphive-default.xml.templatehive-site.xmlvihive-site.xml#:3,$d(刪除第三行(包含)以后所有代碼)添加以下代碼:修改完成后,在“INSERT”模式下按Esc鍵,輸入“:wq”保存退出,運(yùn)行結(jié)果如圖所示。
6.3.4完成相關(guān)配置并添加依賴包6.3.1準(zhǔn)備Hive安裝包6.3.2解壓縮Hive安裝包6.3.3設(shè)置Hive環(huán)境變量6.3.4完成相關(guān)配置并添加驅(qū)動包6.3.5初始化Hive元數(shù)據(jù)庫6.3.6啟動Hive任務(wù)6.3Hive環(huán)境安裝與配置6.3.5初始化MySQL元數(shù)據(jù)庫將MySQL數(shù)據(jù)庫作為Hive元數(shù)據(jù)庫,初始化Hive元數(shù)據(jù),并通過以下schematool命令執(zhí)行初始化:cd$HIVE_HOME/binschematool-dbTypemysql-initSchema運(yùn)行結(jié)果如圖所示。6.3.1準(zhǔn)備Hive安裝包6.3.2解壓縮Hive安裝包6.3.3設(shè)置Hive環(huán)境變量6.3.4完成相關(guān)配置并添加驅(qū)動包6.3.5初始化Hive元數(shù)據(jù)庫6.3.6啟動Hive任務(wù)6.3Hive環(huán)境安裝與配置1.啟動Hadoop集群啟動Hive之前,請先啟動Hadoop集群,命令如下:start-all.shjps運(yùn)行結(jié)果如圖所示。2.啟動Hive啟動Hive,命令如下:hive運(yùn)行結(jié)果如圖所示。Hive啟動成功,出現(xiàn)提示符“hive(default)>”6.3.6啟動Hive并測試是否安裝成功3.測試Hive是否安裝成功查看數(shù)據(jù)庫,測試啟動是否成功,命令如下:hive(default)>showdatabases;運(yùn)行結(jié)果如圖所示。Hive中默認(rèn)存在default數(shù)據(jù)庫。至此,完成了Hive本地模式的安裝與配置。6.3.6啟動Hive并測試是否安裝成功(1)Hive命令說明。(2)Hive數(shù)據(jù)定義。(3)Hive數(shù)據(jù)操作。(4)Hive數(shù)據(jù)查詢。(5)Hive視圖。(6)Hive函數(shù)。本任務(wù)學(xué)習(xí)Hive的數(shù)據(jù)定義語言、Hive數(shù)據(jù)操作命令、Hive數(shù)據(jù)查詢命令及Hive函數(shù)等數(shù)據(jù)處理技術(shù),學(xué)會用Hive解決數(shù)據(jù)分析的實(shí)際問題?!救蝿?wù)描述】【關(guān)鍵步驟】任務(wù)6.4數(shù)據(jù)倉庫Hive在數(shù)據(jù)處理中的應(yīng)用
6.4.1Hive命令說明6.4.2Hive數(shù)據(jù)定義6.4.3Hive數(shù)據(jù)操作6.4.4Hive數(shù)據(jù)查詢6.4.5Hive視圖6.4.6Hive函數(shù)任務(wù)6.4數(shù)據(jù)倉庫Hive在數(shù)據(jù)處理中的應(yīng)用
46.4.1Hive命令說明1)啟動Hadoop,命令如下:
啟動Hadoop[root@master~]#start-all.sh[root@master~]#jps注:執(zhí)行start-all.sh命令后,再用jps查看到了DataNode、NodeManager、NameNode和Jps進(jìn)程,說明Hadoop啟動成功。6.4.1Hive命令說明用戶可以使用Hive的命令行界面對Hive中的數(shù)據(jù)庫庫、數(shù)據(jù)表和數(shù)據(jù)進(jìn)行各種操作。1.Hive命令選項(xiàng)2)查看Hive的命令選項(xiàng):[root@master~]#hivehelp可以看到,輸出了Hive的一些命令選項(xiàng),說明用戶可以通過“—serviceserviceName”的方式啟動某個(gè)服務(wù)。6.4.1Hive命令說明4metastore:啟動個(gè)Hive元數(shù)據(jù)服務(wù)。以下信息列出了Hive主要的命令行選項(xiàng):21cli:命令行界面。3jar:擴(kuò)展自hadoopjar命令,可以執(zhí)行需要Hive環(huán)境的應(yīng)用程序。hivescrver2:啟動Hive遠(yuǎn)程模式時(shí)需要啟動的服務(wù),其可以監(jiān)聽來自其他進(jìn)程的連接。ServiceList:beelinecleardanglingscratchdirclihbaseimporthbaseschematoolhelphiveburninclienthiveserver2hplsqlhwijarlineagellapdumplapllapstatusmetastoremetatoolorcfiledumprcfilecatschemaToolversion其中,部分重要選項(xiàng)的說明如下:6.4.1Hive命令說明在CentOs7服務(wù)器的命令行輸入如下命令,查看Hive的CLI選項(xiàng):[root@master~]#hive--help--servicecli6.4.1Hive命令說明(1)-d,--define<key=value>:主要用來定義變量,如-dA=B或--defineA=B。(2)--database<databasename>:指定使用的數(shù)據(jù)庫名稱。(3)-e<quoted-query-string>:從服務(wù)器命令行執(zhí)行SQL語句。(4)-f<filename>:從文件中執(zhí)行SQL語句。(5)-H,--help:輸出幫助信息。(6)--hiveconf<property=value>:設(shè)置Hive的屬性值,能夠覆蓋hive-site.xml文件中配置的屬性值。(7)--hivevar<key=value>:在Hive命令中替換參數(shù)。(8)-i<filename>:初始化SQL文件。(9)-S,--silent:在集成模式下開啟靜默模式。(10)-v,--verbose:輸出詳細(xì)信息。2.Hive命令的使用[root@master~]#hive6.4.1Hive命令說明在命令行中輸入“hive”命令,即可進(jìn)入Hive命令行終端,命令如下:6.4.1Hive命令說明6.4.2Hive數(shù)據(jù)定義6.4.3Hive數(shù)據(jù)操作6.4.4Hive數(shù)據(jù)查詢6.4.5Hive視圖6.4.6Hive函數(shù)任務(wù)6.4數(shù)據(jù)倉庫Hive在數(shù)據(jù)處理中的應(yīng)用
4查看默認(rèn)數(shù)據(jù)庫Hive中默認(rèn)的數(shù)據(jù)庫為default,如果用戶沒有指定數(shù)據(jù)庫,則會使用Hive的默認(rèn)數(shù)據(jù)庫。查看Hive中數(shù)據(jù)庫的命令如下:1.Hive操作數(shù)據(jù)庫Hive中的數(shù)據(jù)庫是組織表的目錄,也可以稱為命名空間。在生產(chǎn)環(huán)境下,Hive往往會用數(shù)據(jù)庫將表組織起來。hive(default)>SHOWDATABASES;運(yùn)行結(jié)果如圖所示。6.4.2Hive數(shù)據(jù)定義使用如下語句在Hive中創(chuàng)建一個(gè)數(shù)據(jù)庫:hive(default)>CREATEDATABASEdb_jscy;運(yùn)行結(jié)果如圖所示。注:HiveQL命令不區(qū)分大小寫。如果db_jscy數(shù)據(jù)庫存在,將會拋出一個(gè)異常??梢允褂萌缦抡Z句避免拋出異常:hive(default)>CREATEDATABASEIFNOTEXISTSdb_jscy;6.4.2Hive數(shù)據(jù)定義再次查看Hive中存在的數(shù)據(jù)庫,命令如下:hive(default)>
SHOW
DATABASES;Hive中的每個(gè)數(shù)據(jù)庫都會以一個(gè)目錄的形式保存在Hadoop的HDFS上,數(shù)據(jù)庫中的表以子目錄的形式存放,數(shù)據(jù)庫中的數(shù)據(jù)則是在表目錄下以文件的形式存儲。如果創(chuàng)建數(shù)據(jù)庫時(shí)用戶沒有指定數(shù)據(jù)庫的存放位置,則默認(rèn)存放在HDFS的/usr/hive_remote/warehouse目錄下,存放位置由hive-site.xml文件中的hive.metastore.warehouse.dir屬性配置,代碼如下:<property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property>設(shè)置數(shù)據(jù)庫存儲位置查看HDFS中/user/hive/warehouse目錄下的內(nèi)容,命令如下:[root@master~]#hdfsdfs-ls/usr/hive_remote/warehouse運(yùn)行結(jié)果如圖所示。6.4.2Hive數(shù)據(jù)定義在Hive命令行輸入如下命令,查看db_jscy數(shù)據(jù)庫的存放位置:hive(default)>DESCRIBEDATABASEdb_jscy;查看數(shù)據(jù)庫存儲位置運(yùn)行結(jié)果如圖所示。注:數(shù)據(jù)庫目錄的名字都是以.db結(jié)尾的。6.4.2Hive數(shù)據(jù)定義可以看出,db_jscy數(shù)據(jù)庫的存儲位置是“hdfs://master:9000/usr/hive_remote/warehouse”。6.4.2Hive數(shù)據(jù)定義用戶可以通過修改hive-site.xml文件中的配置來修改Hive數(shù)據(jù)庫的存放位置,但是更多的是在創(chuàng)建數(shù)據(jù)庫時(shí)指定數(shù)據(jù)庫的存放位置。創(chuàng)建數(shù)據(jù)庫并指定數(shù)據(jù)庫在HDFS上的存放位置,命令如下:hive(default)>exit;#退出Hive界面回到CentOS命令行
[root@master/]#hdfsdfs-mkdir-p/usr/hadoop/hive#在HDFS上創(chuàng)建目錄[root@master/]#hive#啟動Hivehive(default)>CREATEDATABASEIFNOTEXISTSdb_jscy2LOCATION'/usr/hadoop/hive';hive(default)>DESCRIBEDATABASEdb_jscy2;#查看新建數(shù)據(jù)庫的存儲位置修改數(shù)據(jù)庫存儲位置用戶可以使用如下命令切換數(shù)據(jù)庫,命令如下:hive(default)>USEdb_jscy;切換數(shù)據(jù)庫hive(db_jscy)>SHOWTABLES;可見命令提示符由“hive(default)>”切換為“hive(db_jscy)>”,說明當(dāng)前數(shù)據(jù)庫已經(jīng)切換到“db_jscy”。在當(dāng)前數(shù)據(jù)庫中,可以用“SHOWTABLES;”查看數(shù)據(jù)庫中的表,命令如下:6.4.2Hive數(shù)據(jù)定義數(shù)據(jù)庫可以創(chuàng)建,也可以刪除。刪除Hive中的數(shù)據(jù)庫的命令如下:hive(db_jscy)>DROPDATABASEdb_jscy;#當(dāng)刪除不存在的數(shù)據(jù)庫時(shí)會拋出異常hive(default)>DROPDATABASEIFEXISTSdb_jscyCASCADE;#不會拋出異常刪除數(shù)據(jù)庫6.4.2Hive數(shù)據(jù)定義可以使用ALTERDATABASE命令修改數(shù)據(jù)庫的DBPROPERTIES屬性,命令如下:注意:數(shù)據(jù)庫名和數(shù)據(jù)庫所在位置等其他元數(shù)據(jù)不可被更改。hive(default)>ALTER
DATABASE
db_jscy2
SET
DBPROPERTIES('author'='suchang');2.創(chuàng)建表Hive中創(chuàng)建表的語句參數(shù)如下:CREATE[EXTERNAL]TABLE[IFNOTEXISTS]表名[(列名數(shù)據(jù)類型[COMMENT列注釋],...)][COMMENT表注釋][PARTITIONEDBY(列名數(shù)據(jù)類型[COMMENT列注釋],...)][CLUSTEREDBY(列名,列名,...)[SORTEDBY(列名[ASC|DESC],...)]INTO桶名BUCKETS][ROWFORMAT列格式][STOREDAS文件格式][LOCATION存放在hdfs上的路徑]說明:在Hive中創(chuàng)建數(shù)據(jù)表的完整語句包括以下部分:(1)CREATETABLE:關(guān)鍵字,用于指示Hive創(chuàng)建一個(gè)新的表。(2)表名:在數(shù)據(jù)庫中必須是唯一的,并且遵循Hive的命名約定。(3)列定義:列出表中的所有列及其數(shù)據(jù)類型。(4)可選參數(shù):可以指定分區(qū)列、桶列以及存儲屬性如文件格式、存儲位置等。6.4.2Hive數(shù)據(jù)定義【例6.4.1】某公司員工基本信息表如表6.4.1所示,針對該基本信息,創(chuàng)建一個(gè)數(shù)據(jù)庫jscy,并在其中創(chuàng)建一張表ygxxb。表6.4.1某公司員工基本信息表(部分)職工編號姓名性別部門職務(wù)類別基本工資001王柏宇男辦公室公司經(jīng)理3200.00002齊
敏女辦公室行政助理2500.00003李紅梅女財(cái)務(wù)部財(cái)務(wù)部經(jīng)理3000.00004王向東男財(cái)務(wù)部會計(jì)人員2000.00005陳艷麗女財(cái)務(wù)部出納1800.00006龔文娟女人事處人事處處長3000.00007林大維男研發(fā)部研發(fā)部經(jīng)理2200.00008朱韓斌男研發(fā)部研發(fā)人員2000.00009趙齊偉男研發(fā)部研發(fā)人員2000.00010張小英女研發(fā)部研發(fā)人員2000.002.創(chuàng)建表6.4.2Hive數(shù)據(jù)定義以下通過一個(gè)具體實(shí)例來演示用建表語句創(chuàng)建表的過程。6.4.2Hive數(shù)據(jù)定義第1步:創(chuàng)建數(shù)據(jù)庫jscy。命令如下:hive(default)>
CREATE
DATABASE
jscy;hive(default)>
USE
jscy;hive(jscy)>
第2步:用“CREATETABLE”命令創(chuàng)建表ygxxb。命令如下:CREATETABLEIFNOTEXISTSjscy.ygxxb(zgbhSTRINGCOMMENT'職工編號',xmSTRINGCOMMENT'姓名',xbSTRINGCOMMENT'性別',bmSTRINGCOMMENT'部門',zwlbSTRINGCOMMENT'職務(wù)類別',jbgzFLOATCOMMENT'基本工資')COMMENT'某公司員工基本信息表'ROWFORMATDELIMITEDFIELDSTERMINATEDBY','LINESTERMINATEDBY'\n'STOREDASTEXTFILELOCATION'/usr/hive_remote/warehouse/jscy.db/ygxxb';
(1)IFNOTEXISTS:可選,避免重復(fù)創(chuàng)建已有表(2)jscy.ygxxb:指定了數(shù)據(jù)庫名jscy、表名ygxxb。(3)表有6列:zgbh、xm、xb、bm、zwlb、jbgz。其數(shù)據(jù)類型分別為STRING、STRING、STRING、STRING、STRING、FLOAT。
(4)COMMENT:用于添加列和表的注釋信息。(5)ROWFORMATDELIMITED:定義了字段和行的分隔符分別是“,”和“\n”。(6)STOREDASTEXTFILE:指定了文件存儲格式是文本文件TEXTFILE。(7)LOCATION:用于指定表存在的位置,當(dāng)省略不寫時(shí),將表存儲在當(dāng)前所在數(shù)據(jù)庫的目錄中。6.4.2Hive數(shù)據(jù)定義表6.4.2
Hive中的基本數(shù)據(jù)類型數(shù)據(jù)類型長度(Byte)范圍示例TINYINT1取值范圍為-128~127,適合存儲小范圍的整數(shù)值100YSMALLINT2取值范圍為-32768~32767,適合存儲中等范圍的整數(shù)值100SINT4取值范圍為-232~
232-1,是最常用的整數(shù)類型100BIGINT8取值范圍為-264
~
264-1,適合存儲非常大的整數(shù)值100LFLOAT4單精度浮點(diǎn)數(shù),取值范圍為-3.4028235E38~3.4028235E38。精確到7位小數(shù)5.216.4.2Hive數(shù)據(jù)定義表6.4.2
Hive中的基本數(shù)據(jù)類型(續(xù))DOUBLE8雙精度浮點(diǎn)數(shù),取值范圍為-1.7976931348623157E308~1.7976931348623157E308。精確到16位小數(shù)5.21DECIMAL-用于表示任意精度的小數(shù),DECIMAL(precision[,scale]),其中,precision表示固定精度,最大為38;scale表示小數(shù)位數(shù)DECIMAL(5,2),存儲-999.99~999.99的數(shù)BOOLEAN-布爾類型TRUE/FALSESTRING-變長字符串類型,可以存儲任意長度的字符串?dāng)?shù)據(jù)‘hive’VARCHAR-VARCHAR與STRING類似,但其存儲字符串的長度要求在1~65355之間,超出部分將被截?cái)?例如VARCHAR(20)‘hive’CHAR-CHAR以固定長度來存儲字符串,最大固定長度為255,例如CHAR(20)‘hive’DATE-存儲日期值(Hive中日期類型用字符串表示)‘2025-05-13’TIMESTAMP-存儲納秒級別的時(shí)間戳,UNIX新紀(jì)元時(shí)間1327882394BINARY-用于存儲變長的二進(jìn)制數(shù)據(jù)[0,1,0,1,0,1,0,1]6.4.2Hive數(shù)據(jù)定義表6.4.3
Hive中的復(fù)合數(shù)據(jù)類型數(shù)據(jù)類型描述示例STRUCT結(jié)構(gòu)體,由一組稱為成員的不同數(shù)據(jù)組成,其中每個(gè)成員可以具有不同的類型定義:STRUCT(name:STRING,price:DOUBLE)賦值:STRUCT(‘desktop’,1200.50)STRUCT(‘Smartphone’,800.25)MAPmap是一.組key-value對元組集合。key的類型必須是原子的,value可以是任何類型MAP('name',’Alice’,’department’,’HR’,’salary’,5000)ARRAY數(shù)組,一組具有相同類型和名稱的變量的集合。這些變量稱為數(shù)組的元素,每個(gè)數(shù)組元素都有一個(gè)編號,編號從零開始ARRAY(85,90,75)6.4.2Hive數(shù)據(jù)定義第3步:在服務(wù)器master的/root/目錄下創(chuàng)建ygxxb.txt,并將表6.4.1中的數(shù)據(jù)導(dǎo)入該文本文件。字段數(shù)據(jù)之間用“,”間隔,文件內(nèi)容如下:001,王柏宇,男,辦公室,公司經(jīng)理,3200.00002,齊
敏,女,辦公室,行政助理,2500.00003,李紅梅,女,財(cái)務(wù)部,部門經(jīng)理,3000.00004,王向東,男,財(cái)務(wù)部,會計(jì)人員,2000.00005,陳艷麗,女,財(cái)務(wù)部,出納,1800.00006,龔文娟,女,人事處,人事處處長,3000.00007,林大維,男,研發(fā)部,部門經(jīng)理,2200.00008,朱韓斌,男,研發(fā)部,研發(fā)人員,2000.00009,趙齊偉,男,研發(fā)部,研發(fā)人員,2000.00010,張小英,女,研發(fā)部,研發(fā)人員,2000.00命令如下:hive(default)>
exit;[root@master~]#
cd
/root[root@master~]#
vi
ygxxb.txt6.4.2Hive數(shù)據(jù)定義第4步:使用“LOADDATA”命令加載數(shù)據(jù)。命令如下:[root@master~]#hivehive(default)>USEjscy;hive(jscy)>LOADDATALOCALINPATH'/root/ygxxb.txt'INTOTABLEygxxb;hive(jscy)>SELECT*FROMygxxb;加載數(shù)據(jù)成功后,使用“SELECT”命令查詢表ygxxb中的數(shù)據(jù),命令如下:6.4.2Hive數(shù)據(jù)定義第4步:使用“LOADDATA”命令加載數(shù)據(jù)。hive(jscy)>DESCygxxb;可以使用如下命令查看表信息:如果想查看更詳細(xì)的信息,則使用如下命令:hive(jscy)>DESCEXTENDEDygxxb;6.4.2Hive數(shù)據(jù)定義第4步:使用“LOADDATA”命令加載數(shù)據(jù)。hive(jscy)>DESCFORMATTEDygxxb;可以使用如下命令查看表信息:創(chuàng)建表之后,查看表:hive(jscy)>SHOWTABLES;hive(jscy)>SHOWTABLESINjscy;hive>CREATETABLEIFNOTEXISTSjscy.ygxxb2LIKEjscy.ygxxb;hive>SHOWTABLESINjscy;3.管理表如果Hive中沒有特別指定,則默認(rèn)創(chuàng)建的表都是管理表也稱內(nèi)部表,由Hive負(fù)責(zé)管理表中的數(shù)據(jù),管理表不共享數(shù)據(jù)。刪除管理表時(shí),會刪除管理表中的數(shù)據(jù)和元數(shù)據(jù)信息。6.4.2Hive數(shù)據(jù)定義4.外部表當(dāng)一份數(shù)據(jù)需要被共享時(shí),可以創(chuàng)建一個(gè)外部表指向這份數(shù)據(jù)。創(chuàng)建外部表時(shí),需要在創(chuàng)建表語句中加入EXTERNAL關(guān)鍵字。建表語句如下:CREATEEXTERNALTABLEIFNOTEXISTSjscy.ygxxb_external(zgbhSTRINGCOMMENT'職工編號',xmSTRINGCOMMENT'姓名',xbSTRINGCOMMENT'性別',bmSTRINGCOMMENT'部門',zwlbSTRINGCOMMENT'職務(wù)類別',jbgzFLOATCOMMENT'基本工資')ROWFORMATDELIMITEDFIELDSTERMINATEDBY','LINESTERMINATEDBY'\n'STOREDASTEXTFILELOCATION'/usr/hive_remote/warehouse/ygxxb_external';6.4.2Hive數(shù)據(jù)定義在創(chuàng)建外部表時(shí),只需要在建表語句中加入EXTERNAL關(guān)鍵字。在刪除外部表時(shí),只會刪除外部表的元數(shù)據(jù),不會刪除數(shù)據(jù)??梢允褂谩癉ESCFORMATTEDtablename”語句查看當(dāng)前表是管理表還是外部表。如果是管理表,顯示“TableType:MANAGED_TABLE”;如果是外部表,則為“TableType:EXTERNAL_TABLE”DESCFORMATTEDygxxb_external;6.4.2Hive數(shù)據(jù)定義也可以通過復(fù)制一張表來創(chuàng)建外部表(只復(fù)制表結(jié)構(gòu),不復(fù)制數(shù)據(jù)),命令如下:CREATEEXTERNALTABLEIFNOTEXISTSjscy.ygxxb3LIKEjscy.ygxxb;管理表和外部表可以互相轉(zhuǎn)換,此外將ygxxb表轉(zhuǎn)換為外部表,命令如下:ALTERTABLEygxxbsetTBLPROPERTIES('EXTERNAL'='TRUE');DESCFORMATTEDygxxb;將ygxxb表轉(zhuǎn)換為管理表,命令如下:ALTER
TABLE
ygxxb
set
TBLPROPERTIES
('EXTERNAL'='FALSE');使用“DESCFORMATTEDygxxb;”命令查看表屬性,若從執(zhí)行結(jié)果中發(fā)現(xiàn)“TableType:MANAGED_TABLE”信息,則說明表屬性又被轉(zhuǎn)換為管理表。5.分區(qū)表Hive支持對表進(jìn)行分區(qū),分區(qū)可以將一張表中的數(shù)據(jù)進(jìn)行水平切分,在性能上有著顯著的優(yōu)勢。分區(qū)表在生產(chǎn)環(huán)境中應(yīng)用較多。6.4.2Hive數(shù)據(jù)定義1)分區(qū)管理表:在Hive中創(chuàng)建一張分區(qū)管理表,命令如下:CREATETABLEygxxb_info(zgbhSTRING,xmSTRING,xbSTRING,bmSTRING,zwlbSTRING,jbgzFLOAT)PARTITIONEDBY(provinceSTRING,citySTRING);在創(chuàng)建分區(qū)表時(shí),需要使用PATITIONEDBY自定義分區(qū)字段。需要注意的是,分區(qū)字段不能和表字段重名,否則會拋出“FAILED:SemanticException[Error10035]:Columnrepeatedinpartitioningcolumns”錯誤。例如:6.4.2Hive數(shù)據(jù)定義CREATETABLEygxxb_info2(zgbhSTRING,xmSTRING,xbSTRING,bmSTRING,zwlbSTRING,jbgzFLOAT)PARTITIONEDBY(bmSTRING,citySTRING);Hive中的表以目錄形式存在于HDFS中的數(shù)據(jù)庫目錄下,而表的分區(qū)則是以表的子目錄的形式存在,子目錄如下:/usr/hive_remote/warehouse/ygxxb_info/province=jiangsu/city=nanjing可以使用如下語句查詢分區(qū)管理表中的數(shù)據(jù):SELECT*FROMygxxb_infoWHEREprovince='jiangsu'ANDcity='nanjing';Hive也會將分區(qū)字段的數(shù)據(jù)輸出。上述語句查詢的是province=’jiangsu’和city=’nanjing’下的數(shù)據(jù),Hive只會掃描HDFS上“/usr/hive_remote/warehouse/ygxxb_info/province=jiangsu/city=nanjing”目錄下的數(shù)據(jù),這對于數(shù)據(jù)量非常巨大的Hive表來說,性能提升是非常明顯的。6.4.2Hive數(shù)據(jù)定義在生產(chǎn)環(huán)境下,最常使用的就是按照時(shí)間對Hive中的表數(shù)據(jù)分區(qū)。如果數(shù)據(jù)表中的數(shù)據(jù)和分區(qū)個(gè)數(shù)都非常大,則查詢所有分區(qū)的數(shù)據(jù)會觸發(fā)一個(gè)巨大的MapReduce任務(wù)??梢詫ive的安全措施設(shè)置為strict模式,設(shè)置為strict模式后,如果一個(gè)針對分區(qū)表的查詢沒有加上分區(qū)條件,此查詢作業(yè)就會禁止提交??梢栽趆ive_site.xml文件中配置hive.mapred.mode屬性,代碼如下:<property><name>hive.ma
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 排他性合作協(xié)議
- 運(yùn)營隧道的養(yǎng)護(hù)與維修施工工藝隧道工藝標(biāo)準(zhǔn)系列之十五模板
- 嬰幼兒護(hù)理技能培訓(xùn)課件
- 娛樂行業(yè)介紹
- 2026年工業(yè)鍋爐運(yùn)行培訓(xùn)試題及答案
- 2026年四川醫(yī)療衛(wèi)生面試常見題型解析
- 2026年呼吸內(nèi)科臨床綜合能力訓(xùn)練題及詳細(xì)解答
- 2026年醫(yī)患關(guān)系與糾紛處理能力試題含答案
- 2026年新疆油田稠油開發(fā)與處理工藝測試含答案
- 2026年股市熔斷機(jī)制小測含答案
- 晝夜明暗圖課件
- 臨床成人吞咽障礙患者口服給藥護(hù)理
- 兒童呼吸道合胞病毒感染診斷治療和預(yù)防專家共識 4
- 雨課堂在線學(xué)堂《大數(shù)據(jù)技術(shù)與應(yīng)用》作業(yè)單元考核答案
- 全國計(jì)算機(jī)等級考試一級WPS Office真題題庫及答案
- 義警法律知識培訓(xùn)總結(jié)課件
- 實(shí)施指南(2025)《DZT 0462.5-2023 礦產(chǎn)資源“三率”指標(biāo)要求 第 5 部分:金、銀、鈮、鉭、鋰、鋯、鍶、稀土、鍺》解讀
- 棉塵安全培訓(xùn)課件
- 梯子作業(yè)安全培訓(xùn)效果課件
- 吸附解析塔拆除施工方案
- 留置場所人員管理辦法
評論
0/150
提交評論