本書從理論知識入手,結合數(shù)據(jù)倉庫的概念幫助讀者更好地理解Hive,在掌握Hive相關理論知識的基礎上,逐步深入地學習Hive。工欲善其事,必先利其器,首先從創(chuàng)建虛擬機并安裝Linux操作系統(tǒng)開始逐步完成Hive的部署,然后在部署完成的Hive環(huán)境基礎上,學習Hive數(shù)據(jù)定義語言、Hive數(shù)據(jù)操作語言和Hive數(shù)據(jù)查詢語言的相關操作,在學習了上述三種語言之后,接下來深入學習Hive的其他功能,包括Hive內置函數(shù)、Hive自定義函數(shù)、Hive的新特性事務以及Hive的相關優(yōu)化,從而幫助讀者掌握Hive的強大功能和特性。后,本書通過一個綜合項目教育大數(shù)據(jù)分析平臺,使讀者對Hive數(shù)據(jù)倉庫在實際應用中涉及的相關知識內容具有更深入的理解,在此項目中不僅會涉及使用Hive實現(xiàn)數(shù)據(jù)倉庫分層、數(shù)據(jù)轉換和數(shù)據(jù)分析的相關操作,而且還涉及使用Sqoop將數(shù)據(jù)倉庫中的數(shù)據(jù)進行導出和導入,以及使用FineBI工具實現(xiàn)數(shù)據(jù)可視化功能。 本書附有配套視頻、源代碼、習題、教學設計、教學課件等資源。同時,為了幫助初學者更好地學習本書的內容,還提供了在線答疑,歡迎讀者關注。 本書可以作為高等學校本、專科計算機相關專業(yè),信息管理等相關專業(yè)的大數(shù)據(jù)課程教材,也可以供相關技術人員參考,是一本適合廣大計算機編程愛好者的優(yōu)秀讀物。
Hive提出海量數(shù)據(jù)可以繼續(xù)沿用傳統(tǒng)數(shù)據(jù)分析方法SQL語句來處理的思想,開發(fā)人員不需要學習新的計算機語言而繼續(xù)使用熟悉的SQL結構化查詢語句來處理大規(guī)模的數(shù)據(jù),Hive中的SQL語句我們稱之為HiveQL查詢語句,HiveQL查詢語句的語法結構與傳統(tǒng)SQL語句的語法結構幾乎是一模一樣的。Hive運行在Hadoop分布式系統(tǒng)中,這使得Hive不僅可以使用HDFS進行分布式存儲,而且還可以通過MapReduce分布式計算框架來查詢數(shù)據(jù),相比于傳統(tǒng)數(shù)據(jù)倉庫來說,Hive在存儲性能和查詢效率上都得到了很好的提升。
本書將帶領大家認識Hive的相關技術。通過學習本書,使讀者對Hive有一個深刻的認識,本書共分為9章。
大數(shù)據(jù)是信息化發(fā)展的新階段,隨著全球數(shù)據(jù)存儲量的不斷提高,大數(shù)據(jù)正進入發(fā)展加速時期。近年來,隨著5G、AI、云計算、區(qū)塊鏈等新一代信息技術的蓬勃發(fā)展,大數(shù)據(jù)技術走向融合發(fā)展的關鍵階段。同時,我國大數(shù)據(jù)產業(yè)保持良好發(fā)展勢頭,大數(shù)據(jù) 行業(yè)滲透融合全面展開,融合生態(tài)加速構建,新技術、新業(yè)態(tài)、新模式不斷涌現(xiàn),政策支持、戰(zhàn)略引領、標準規(guī)范、產業(yè)創(chuàng)新的良性互動局面正在形成。
隨著大數(shù)據(jù)時代的到來,各企業(yè)都積累了大量的數(shù)據(jù),隨著數(shù)據(jù)量的不斷增長,企業(yè)不僅需要花費巨大的硬件成本來存儲這些數(shù)據(jù),而且還需要人員成本來維護這些數(shù)據(jù)。對于一個企業(yè)來說,如果只是單純地存儲和維護這些數(shù)據(jù),那么這些數(shù)據(jù)將變得毫無價值,只是一種單純的消耗品,于是企業(yè)開始利用這些持續(xù)不斷增長的數(shù)據(jù),從中挖掘出具有潛在商業(yè)價值的信息,幫助企業(yè)從數(shù)據(jù)中獲取經驗,從而為企業(yè)創(chuàng)造有效價值。對于這些積累下來的大量數(shù)據(jù),通常稱為離線數(shù)據(jù)。常見的離線計算框架有MapReduce和Spark,然而使用這些框架需要開發(fā)人員至少擁有Java語言的基礎,對于那些熟悉使用SQL的傳統(tǒng)數(shù)據(jù)分析人員來說并不能得心應手,于是一個全新的技術Hive離線處理工具進入了大眾的視野。
Hive提出海量數(shù)據(jù)可以繼續(xù)沿用傳統(tǒng)數(shù)據(jù)分析方法SQL語句來處理的思想,開發(fā)人員不需要學習新的計算機語言而繼續(xù)使用熟悉的SQL結構化查詢語句來處理大規(guī)模的數(shù)據(jù),Hive中的SQL語句稱為HiveQL查詢語句,HiveQL查詢語句的語法結構與傳統(tǒng)SQL語句的語法結構幾乎一樣。Hive運行在Hadoop分布式系統(tǒng)中,這使得Hive不僅可以使用HDFS進行分布式存儲,還可以通過MapReduce分布式計算框架來查詢數(shù)據(jù),相比于傳統(tǒng)數(shù)據(jù)倉庫來說,Hive在存儲性能和查詢效率上都得到了很好的提升。
本書帶領大家認識Hive的相關技術。通過學習本書,使讀者對Hive有深刻的認識,本書共分為9章,接下來分別對每章所講解的知識內容進行簡要介紹。
第1章主要從數(shù)據(jù)倉庫和Hive的理論知識出發(fā),講解數(shù)據(jù)倉庫和Hive的相關概念,包括數(shù)據(jù)倉庫分層、數(shù)據(jù)倉庫的數(shù)據(jù)模型、Hive架構、Hive工作原理等內容。
第2章講解如何部署Hive的嵌入模式、本地模式和遠程模式,本章從0開始教會讀者如何部署Hive,其中包括虛擬機的創(chuàng)建、Linux操作系統(tǒng)的安裝與配置、Hadoop高可用集群的部署等內容。
第3章主要講解了Hive數(shù)據(jù)定義語言的相關操作,包括數(shù)據(jù)庫的基本操作、數(shù)據(jù)表的基本操作,以及分區(qū)表、分桶表、臨時表、視圖和索引的相關操作。
第4章主要講解了Hive數(shù)據(jù)操作語言的相關操作,包括加載文件、基本查詢、插入數(shù)據(jù)以及IMPORT和EXPORT。
第5章主要講解了Hive數(shù)據(jù)查詢語言的相關操作,包括SELECT句式分析、Hive運算符、公用表表達式、分組操作、排序操作、UNION語句、JOIN語句以及抽樣查詢。
第6章主要講解了Hive函數(shù)的相關操作,針對Hive的內置函數(shù)和自定義函數(shù)兩方面進行詳細講解。
第7章主要講解了Hive事務的相關概念和操作,包括ACID概述、Hive事務的設計與實現(xiàn)、開啟Hive事務、事務表的更新操作和刪除操作。
第8章主要講解了Hive優(yōu)化的相關知識,包括Hive存儲優(yōu)化、Hive參數(shù)優(yōu)化和HiveQL語句優(yōu)化技巧。
第9章講解了一個綜合項目教育大數(shù)據(jù)分析平臺,主要針對Hive數(shù)據(jù)倉庫在實際應用中涉及的相關知識內容進行詳細講解,包括使用Hive實現(xiàn)數(shù)據(jù)倉庫分層、數(shù)據(jù)轉換、數(shù)據(jù)分析,以及相關大數(shù)據(jù)工具Sqoop和FineBI的使用。
致謝
本書的編寫和整理由江蘇傳智播客教育科技股份有限公司教材研發(fā)中心完成,主要參與人員有高美云、張明強、李丹等,全體人員在近一年的編寫過程中付出了許多辛勤的汗水。除此之外,還有傳智播客600多名學員參與了本書的試讀工作,他們站在初學者的角度對本書提供了許多寶貴的修改意見,在此一并表示衷心的感謝。
意見反饋
盡管我們盡了的努力,但書中難免會有不妥之處,歡迎各界專家和讀者來信給予寶貴意見,我們將不勝感激。您在閱讀本書時,如果發(fā)現(xiàn)任何問題或有不認同之處可以通過電子郵件與我們取得聯(lián)系。
請發(fā)送電子郵件至: itcast_book@vip.sina.com。
江蘇傳智播客教育科技股份有限公司教材研發(fā)中心2021年5月于北京
江蘇傳智播客教育科技股份有限公司(簡稱傳智教育)是一家致力于培養(yǎng)高素質軟件開發(fā)人才的科技公司,黑馬程序員是傳智教育旗下高端IT教育品牌。高美云是本書創(chuàng)作團隊核心成員,編寫過多本教材,均暢銷多年,深受讀者喜愛。
第1章Hive簡介1
1.1認識數(shù)據(jù)倉庫1
1.1.1數(shù)據(jù)倉庫簡介1
1.1.2數(shù)據(jù)倉庫分層3
1.1.3數(shù)據(jù)倉庫的數(shù)據(jù)模型5
1.2Hive概述6
1.3Hive架構7
1.4Hive工作原理8
1.5Hive數(shù)據(jù)類型9
1.6本章小結10
1.7課后習題11
第2章Hive部署12
2.1Linux環(huán)境的搭建12
2.1.1創(chuàng)建虛擬機12
2.1.2啟動虛擬機并安裝Linux操作
系統(tǒng)19
2.1.3克隆虛擬機26
2.1.4配置Linux系統(tǒng)網絡及主機名30
2.1.5配置SSH服務34
2.2JDK的部署42
2.3Zookeeper的部署43
2.3.1Zookeeper集群的安裝與配置43
2.3.2Zookeeper集群的啟動與關閉46
2.4Hadoop的部署48
2.4.1Hadoop高可用集群的規(guī)劃48
2.4.2安裝Hadoop49
2.4.3配置Hadoop高可用集群51
2.4.4啟動Hadoop高可用集群58
2.5Hive的部署622.5.1Hive部署之嵌入模式62
2.5.2Hive部署之本地模式64
2.5.3Hive部署之遠程模式70
2.6本章小結74
2.7課后習題74
目錄Hive數(shù)據(jù)倉庫應用第3章Hive的數(shù)據(jù)定義語言76
3.1數(shù)據(jù)庫的基本操作76
3.1.1創(chuàng)建數(shù)據(jù)庫76
3.1.2查詢數(shù)據(jù)庫77
3.1.3查看數(shù)據(jù)庫信息78
3.1.4切換數(shù)據(jù)庫79
3.1.5修改數(shù)據(jù)庫79
3.1.6刪除數(shù)據(jù)庫80
3.2數(shù)據(jù)表的基本操作81
3.2.1CREATE TABLE句式分析81
3.2.2數(shù)據(jù)表簡介84
3.2.3創(chuàng)建數(shù)據(jù)表84
3.2.4查看數(shù)據(jù)表86
3.2.5修改數(shù)據(jù)表88
3.2.6刪除數(shù)據(jù)表94
3.3分區(qū)表95
3.3.1創(chuàng)建分區(qū)表95
3.3.2查詢分區(qū)表96
3.3.3添加分區(qū)97
3.3.4重命名分區(qū)98
3.3.5移動分區(qū)98
3.3.6刪除分區(qū)100
3.4分桶表101
3.4.1創(chuàng)建分桶表101
3.4.2查看分桶表信息102
3.5臨時表103
3.6視圖104
3.6.1創(chuàng)建視圖105
3.6.2查詢視圖信息105
3.6.3查看視圖106
3.6.4修改視圖107
3.6.5刪除視圖109
3.7索引109
3.7.1Hive中的索引110
3.7.2創(chuàng)建索引110
3.7.3查看索引表111
3.7.4查看索引111
3.7.5重建索引112
3.7.6刪除索引113
3.8本章小結114
3.9課后習題114
第4章Hive的數(shù)據(jù)操作語言116
4.1加載文件116
4.1.1加載文件的語法格式116
4.1.2向分區(qū)表加載文件119
4.2基本查詢120
4.3插入數(shù)據(jù)121
4.3.1基本插入121
4.3.2查詢插入123
4.3.3向分區(qū)表插入數(shù)據(jù)127
4.4IMPORT和EXPORT131
4.5本章小結133
4.6課后習題133
第5章Hive數(shù)據(jù)查詢語言135
5.1SELECT句式分析135
5.2Hive運算符138
5.2.1關系運算符138
5.2.2算術運算符140
5.2.3邏輯運算符142
5.2.4復雜運算符143
5.3公用表表達式146
5.4分組操作147
5.5排序操作149
5.6UNION語句154
5.7JOIN語句156
5.8抽樣查詢161
5.8.1隨機抽樣161
5.8.2分桶抽樣162
5.8.3數(shù)據(jù)塊抽樣162
5.9本章小結164
5.10課后習題164
第6章Hive函數(shù)165
6.1Hive內置函數(shù)165
6.1.1聚合函數(shù)165
6.1.2數(shù)學函數(shù)169
6.1.3集合函數(shù)170
6.1.4類型轉換函數(shù)171
6.1.5日期函數(shù)172
6.1.6條件函數(shù)176
6.1.7字符串函數(shù)178
6.1.8表生成函數(shù)182
6.2Hive自定義函數(shù)185
6.2.1UDF186
6.2.2UDTF196
6.2.3UDAF199
6.3本章小結203
6.4課后習題203
第7章Hive事務205
7.1事務特性205
7.2Hive事務的設計與實現(xiàn)206
7.3開啟Hive事務207
7.4更新操作209
7.5刪除操作210
7.6本章小結211
7.7課后習題211
第8章Hive優(yōu)化213
8.1Hive存儲優(yōu)化213
8.2Hive參數(shù)優(yōu)化215
8.2.1配置MapReduce壓縮215
8.2.2配置Map個數(shù)216
8.2.3配置Reduce個數(shù)217
8.2.4配置合并文件217
8.2.5配置并行執(zhí)行218
8.2.6配置本地模式218
8.2.7配置分組219
8.3HiveQL語句優(yōu)化技巧219
8.4本章小結219
8.5課后習題220
第9章綜合項目教育大數(shù)據(jù)分析平臺221
9.1項目概述221
9.1.1項目背景介紹221
9.1.2需求分析222
9.1.3原始數(shù)據(jù)結構222
9.1.4數(shù)據(jù)倉庫分層設計223
9.1.5項目架構224
9.2部署Sqoop225
9.3實現(xiàn)數(shù)據(jù)倉庫分層227
9.4數(shù)據(jù)采集231
9.5數(shù)據(jù)轉換235
9.6數(shù)據(jù)分析237
9.6.1實現(xiàn)地區(qū)訪問用戶量統(tǒng)計237
9.6.2實現(xiàn)會話頁面排行榜238
9.6.3實現(xiàn)訪問用戶量統(tǒng)計240
9.6.4實現(xiàn)來源渠道訪問用戶量統(tǒng)計241
9.6.5實現(xiàn)咨詢率統(tǒng)計242
9.7數(shù)據(jù)可視化245
9.7.1導出數(shù)據(jù)245
9.7.2安裝、啟動與配置FineBI247
9.7.3實現(xiàn)數(shù)據(jù)可視化260
9.8本章小結271