本書系統(tǒng)介紹Hive數(shù)據(jù)倉庫的相關(guān)知識和技術(shù)。全書共12章,主要內(nèi)容包括Hive數(shù)據(jù)倉庫基礎(chǔ)、Hive環(huán)境搭建、Hive基礎(chǔ)、Hive數(shù)據(jù)定義、Hive數(shù)據(jù)操作、HQL查詢、Hive函數(shù)、Hive數(shù)據(jù)壓縮、Hive優(yōu)化、Hive綜合案例和上機實驗等。本書知識結(jié)構(gòu)簡單明了,案例生動具體,內(nèi)容設(shè)計新穎。本書免費提供教學(xué)大綱、電子課件和所有案例源代碼,書后附有部分習(xí)題參考答案。本書可作為普通高校數(shù)據(jù)科學(xué)與大數(shù)據(jù)相關(guān)專業(yè)的教材,也可作為想繼續(xù)深入了解大數(shù)據(jù)存儲和開發(fā)的讀者的參考書,還可作為各類大數(shù)據(jù)相關(guān)培訓(xùn)的教材。
王劍輝,沈陽師范大學(xué)數(shù)學(xué)與系統(tǒng)科學(xué)學(xué)院教授,長期從事Web應(yīng)用程序設(shè)計,Hive數(shù)據(jù)倉庫,Hadoop大數(shù)據(jù)技術(shù)、Java程序設(shè)計、人工智能等方面的科研與教學(xué)工作。
第1章 Hive數(shù)據(jù)倉庫基礎(chǔ) 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ù)模型 3
1.1.4 數(shù)據(jù)倉庫的體系結(jié)構(gòu) 4
1.2 Hive數(shù)據(jù)倉庫 5
1.3 Hive體系結(jié)構(gòu)及執(zhí)行流程 6
1.3.1 Hive體系結(jié)構(gòu) 6
1.3.2 Hive執(zhí)行流程 8
1.4 Hive數(shù)據(jù)倉庫和數(shù)據(jù)庫比較 8
習(xí)題1 10
第2章 Hive環(huán)境搭建 12
2.1 Hive安裝及配置 12
2.1.1 Hive的安裝模式 12
2.1.2 Hive安裝及配置過程 12
2.1.3 Hive基本操作 14
2.2 MySQL安裝及配置 15
2.2.1 MySQL安裝包準(zhǔn)備 15
2.2.2 MySQL服務(wù)器端安裝 15
2.2.3 MySQL客戶端安裝 16
2.3 Hive元數(shù)據(jù)配置 16
2.3.1 驅(qū)動復(fù)制 16
2.3.2 配置元數(shù)據(jù)到MySQL 16
2.3.3 多終端啟動Hive 17
2.4 Hive JDBC連接 18
2.4.1 HiveServer2配置 18
2.4.2 HiveServer2啟動 18
2.4.3 Beeline啟動 18
2.4.4 HiveServer2連接 19
2.5 Hive常見屬性配置 19
2.5.1 Hive位置配置 19
2.5.2 信息顯示配置 19
2.5.3 運行日志信息配置 20
2.5.4 Hive參數(shù)配置方式 20
習(xí)題2 21
第3章 Hive基礎(chǔ) 23
3.1 Hive數(shù)據(jù)類型 23
3.1.1 基本數(shù)據(jù)類型 23
3.1.2 復(fù)雜數(shù)據(jù)類型 24
3.1.3 數(shù)據(jù)類型轉(zhuǎn)換 24
3.2 Hive運算符 25
3.2.1 算術(shù)運算符 25
3.2.2 比較運算符 25
3.2.3 邏輯運算符 26
3.2.4 復(fù)雜運算符 26
3.3 Hive數(shù)據(jù)存儲 27
3.4 Hive表存儲格式 27
3.4.1 行式存儲和列式存儲 28
3.4.2 TextFile格式 28
3.4.3 SequenceFile格式 28
3.4.4 ORC格式 29
3.4.5 Parquet格式 29
3.5 Hive常用交互命令 30
3.6 Hive其他操作命令 31
習(xí)題3 31
第4章 Hive數(shù)據(jù)定義 34
4.1 數(shù)據(jù)倉庫的創(chuàng)建 34
4.2 數(shù)據(jù)倉庫的查詢 35
4.2.1 顯示數(shù)據(jù)倉庫 35
4.2.2 查看數(shù)據(jù)倉庫詳情 35
4.2.3 切換數(shù)據(jù)倉庫 35
4.3 數(shù)據(jù)倉庫的修改 35
4.4 數(shù)據(jù)倉庫的刪除 36
4.5 表的創(chuàng)建 36
4.5.1 內(nèi)部表 37
4.5.2 外部表 40
4.5.3 內(nèi)部表和外部表的轉(zhuǎn)換 42
4.6 分區(qū)表 42
4.6.1 分區(qū)表基本操作 43
4.6.2 二級分區(qū)表創(chuàng)建 45
4.7 桶表 46
4.8 表的修改 48
4.8.1 重命名 48
4.8.2 增加和刪除分區(qū) 48
4.8.3 修改、增加和替換列 49
4.9 表的刪除 51
4.10 視圖 52
習(xí)題4 57
第5章 Hive數(shù)據(jù)操作 60
5.1 數(shù)據(jù)導(dǎo)入 60
5.1.1 Load加載數(shù)據(jù) 60
5.1.2 Insert插入數(shù)據(jù) 61
5.1.3 As Select加載數(shù)據(jù) 63
5.1.4 Location加載數(shù)據(jù) 63
5.1.5 Import加載數(shù)據(jù) 64
5.2 數(shù)據(jù)導(dǎo)出 64
5.2.1 Insert語句導(dǎo)出 64
5.2.2 Hadoop命令導(dǎo)出 65
5.2.3 Hive Shell命令導(dǎo)出 65
5.2.4 Export語句導(dǎo)出 65
5.2.5 Sqoop導(dǎo)出 65
習(xí)題5 66
第6章 HQL查詢 68
6.1 Select基本查詢 68
6.1.1 全表和特定列查詢 68
6.1.2 列的別名 69
6.1.3 Limit語句 69
6.2 Where語句 69
6.2.1 Like的使用 71
6.2.2 Rlike的使用 72
6.3 分組語句 74
6.3.1 Group By語句 74
6.3.2 Having語句 74
6.4 Join語句 75
6.4.1 等值連接 75
6.4.2 表的別名 76
6.4.3 內(nèi)連接 76
6.4.4 左外連接 76
6.4.5 右外連接 76
6.4.6 滿外連接 76
6.4.7 左半連接 77
6.4.8 多表連接 77
6.4.9 笛卡兒積Join 78
6.5 排序 79
6.5.1 Order By全局排序 79
6.5.2 字段別名排序 80
6.5.3 多字段排序 81
6.5.4 Sort By內(nèi)部排序 81
6.5.5 Distribute By分區(qū)排序 83
6.5.6 Cluster By排序 83
6.6 抽樣查詢 84
6.6.1 桶表抽樣查詢 84
6.6.2 數(shù)據(jù)塊抽樣查詢 85
6.6.3 隨機抽樣查詢 87
習(xí)題6 87
第7章 Hive函數(shù) 89
7.1 Hive內(nèi)置函數(shù) 89
7.1.1 數(shù)值計算函數(shù) 89
7.1.2 聚合函數(shù) 90
7.1.3 日期時間函數(shù) 91
7.1.4 條件函數(shù) 92
7.1.5 字符串處理函數(shù) 93
7.1.6 內(nèi)置函數(shù)查看命令 96
7.2 其他常用函數(shù) 96
7.2.1 空字段賦值函數(shù) 96
7.2.2 列轉(zhuǎn)行函數(shù) 97
7.2.3 窗口函數(shù) 100
7.2.4 排序函數(shù) 106
7.3 自定義函數(shù) 108
7.3.1 UDF函數(shù) 108
7.3.2 UDTF函數(shù) 110
7.3.3 UDAF函數(shù) 112
習(xí)題7 113
第8章 Hive數(shù)據(jù)壓縮 116
8.1 數(shù)據(jù)壓縮格式 116
8.2 Hadoop壓縮配置 117
8.2.1 Snappy壓縮方式配置 117
8.2.2 MapReduce支持的壓縮編碼 118
8.2.3 MapReduce壓縮格式參數(shù)配置 118
8.3 Map輸出壓縮開啟 119
8.4 Reduce輸出壓縮開啟 119
8.5 常用Hive表存儲格式比較 120
8.5.1 存儲文件的壓縮比測試 120
8.5.2 存儲文件的查詢速度測試 122
8.6 存儲和壓縮結(jié)合 123
習(xí)題8 125
第9章 Hive優(yōu)化 127
9.1 Hive參數(shù)優(yōu)化 127
9.1.1 本地模式 127
9.1.2 Fetch抓取 128
9.1.3 并行執(zhí)行 128
9.1.4 嚴格模式 129
9.1.5 推測執(zhí)行 130
9.1.6 JVM重用 131
9.2 數(shù)據(jù)傾斜 131
9.2.1 合理設(shè)置Map個數(shù) 131
9.2.2 合并小文件 132
9.2.3 復(fù)雜文件增加Map個數(shù) 132
9.2.4 合理設(shè)置Reduce個數(shù) 133
9.3 HQL優(yōu)化 134
9.3.1 Group By優(yōu)化 134
9.3.2 小表、大表Join 134
9.3.3 大表Join大表 136
9.3.4 MapJoin 137
9.3.5 Count優(yōu)化 138
9.3.6 行/列過濾優(yōu)化 139
9.3.7 動態(tài)分區(qū)調(diào)整優(yōu)化 140
9.3.8 執(zhí)行計劃優(yōu)化 141
習(xí)題9 142
第10章 綜合案例1:廣電大數(shù)據(jù)分析 144
10.1 案例需求分析 144
10.2 案例數(shù)據(jù)及建表 144
10.2.1 原始數(shù)據(jù) 144
10.2.2 數(shù)據(jù)表結(jié)構(gòu) 144
10.2.3 創(chuàng)建表 145
10.2.4 向TextFile表導(dǎo)入數(shù)據(jù) 147
10.2.5 向ORC表導(dǎo)入數(shù)據(jù) 147
10.3 數(shù)據(jù)統(tǒng)計分析 147
10.3.1 基本信息查詢 147
10.3.2 單個用戶觀看時長Top20 148
10.3.3 用戶觀看時長Top20 149
10.3.4 電視觀看數(shù)Top20 150
10.3.5 電視觀看時長Top20 150
10.3.6 用戶正常狀態(tài)及數(shù)量 151
第11章 綜合案例2:影評大數(shù)據(jù)分析 152
11.1 案例需求分析 152
11.2 案例數(shù)據(jù)及建表 152
11.2.1 原始數(shù)據(jù) 152
11.2.2 創(chuàng)建表及導(dǎo)入數(shù)據(jù) 153
11.2.3 基本信息查詢 153
11.3 數(shù)據(jù)統(tǒng)計分析 154
11.3.1 評分次數(shù)最多的10部電影 154
11.3.2 性別當(dāng)中評分最高的10部電影 154
11.3.3 一部電影各年齡段的平均影評 156
11.3.4 評分最高的10部電影的平均影評分 156
11.3.5 好片最多年份的最好看電影Top10 157
11.3.6 評分最高的10部Comedy類電影 158
11.3.7 各種類型電影中評價最高的5部電影 159
第12章 上機實驗 163
實驗1 Hive安裝部署 163
實驗2 Hive數(shù)據(jù)定義 165
實驗3 Hive數(shù)據(jù)操作 167
實驗4 Hive分區(qū)表和桶表 171
實驗5 Hive查詢 174
實驗6 Hive分組排序 177
實驗7 Hive JDBC連接 179
實驗8 Hive UDF 182
附錄A Hive常用網(wǎng)址 185
附錄B 常見錯誤及解決方案 186
附錄C 部分習(xí)題答案 188
參考文獻 191