Hive是大數(shù)據(jù)領域的一個重要開發(fā)工具。本書基于Hive3.1.3版本進行編寫,首先,簡單介紹了Hive的起源和發(fā)展,以及Hive的安裝和部署;其次,分別介紹了Hive的數(shù)據(jù)定義語言、數(shù)據(jù)操作語言、查詢語言,以及各種函數(shù),其中穿插安排了大量的綜合案例練習;再次,講解了分區(qū)表和分桶表,以及文件的壓縮;最后,重點講解了Hive在使用不同執(zhí)行引擎時的企業(yè)級性能調(diào)優(yōu)手段。本書廣泛適用于大數(shù)據(jù)的學習者和從業(yè)人員、Hive初學者,以及高等院校大數(shù)據(jù)相關專業(yè)的學生,同時可作為大數(shù)據(jù)學習的必備書籍。
尚硅谷教育是一家專業(yè)的IT教育培訓機構,開設了JavaEE、大數(shù)據(jù)、HTML5前端等多門學科,在互聯(lián)網(wǎng)上發(fā)布的JavaEE、大數(shù)據(jù)、HTML5前端、區(qū)塊鏈、C語言、Python等技術視頻教程廣受贊譽。
第1章 Hive入門 1
1.1 什么是Hadoop 1
1.2 什么是Hive 4
1.3 Hive的架構 4
1.4 學前導讀 7
1.4.1 學習的基本要求 7
1.4.2 環(huán)境準備 7
1.5 本章總結 8
第2章 Hive的安裝部署 9
2.1 Hive的安裝 9
2.1.1 Hive初體驗 9
2.1.2 MySQL的安裝和元數(shù)據(jù)配置 12
2.1.3 Hive的服務部署 16
2.2 Hive的使用技巧 24
2.2.1 常用交互命令 24
2.2.2 參數(shù)配置方式 25
2.2.3 常見屬性配置 25
2.3 本章總結 27
第3章 數(shù)據(jù)定義語言 28
3.1 數(shù)據(jù)庫的定義 28
3.2 表的定義 30
3.2.1 創(chuàng)建表 30
3.2.2 表的其他定義語言 34
3.3 本章總結 35
第4章 數(shù)據(jù)操作語言 36
4.1 數(shù)據(jù)加載 36
4.2 數(shù)據(jù)插入 37
4.2.1 將查詢結果插入表中 37
4.2.2 將給定values插入表中 37
4.2.3 將查詢結果寫入目標路徑 38
4.3 數(shù)據(jù)的導出和導入 38
4.4 本章總結 38
第5章 查詢 39
5.1 數(shù)據(jù)準備 39
5.2 基本查詢 40
5.2.1 select子句——全表和特定列查詢 40
5.2.2 列別名 42
5.2.3 limit子句 42
5.2.4 order by子句 43
5.2.5 where子句 46
5.2.6 關系運算符 47
5.2.7 邏輯運算符 49
5.2.8 算術運算符 51
5.3 分組聚合 52
5.3.1 聚合函數(shù) 52
5.3.2 group by子句 56
5.3.3 having子句 59
5.4 join連接 62
5.4.1 join連接語法的簡介與表別名 62
5.4.2 數(shù)據(jù)準備 65
5.4.3 連接分類 66
5.4.4 多表連接 71
5.4.5 笛卡兒積連接 73
5.4.6 join連接與MapReduce程序 74
5.4.7 聯(lián)合(union&union all) 75
5.5 本章總結 77
第6章 綜合案例練習之基礎查詢 78
6.1 環(huán)境準備 78
6.2 簡單查詢練習 80
6.3 匯總與分組練習 84
6.3.1 匯總練習 84
6.3.2 分組練習 85
6.3.3 對分組結果的條件查詢 87
6.3.4 查詢結果排序和分組指定條件 90
6.4 復雜查詢練習 94
6.5 多表查詢練習 97
6.5.1 表連接 97
6.5.2 多表連接 102
6.6 本章總結 117
第7章 初級函數(shù) 118
7.1 函數(shù)簡介 118
7.2 單行函數(shù) 119
7.2.1 數(shù)值函數(shù) 119
7.2.2 字符串函數(shù) 121
7.2.3 日期函數(shù) 126
7.2.4 流程控制函數(shù) 129
7.2.5 集合函數(shù) 131
7.2.6 案例演示 133
7.3 高級聚合函數(shù) 140
7.4 本章總結 142
第8章 綜合案例練習之初級函數(shù) 143
8.1 環(huán)境準備 143
8.1.1 用戶信息表 143
8.1.2 商品信息表 144
8.1.3 商品品類信息表 145
8.1.4 訂單信息表 145
8.1.5 訂單明細表 147
8.1.6 用戶登錄明細表 150
8.1.7 商品價格變更明細表 151
8.1.8 配送信息表 152
8.1.9 好友關系表 153
8.1.10 收藏信息表 155
8.2 初級函數(shù)練習 156
8.2.1 篩選2021年總銷量低于100件的商品 156
8.2.2 查詢每日新增用戶數(shù) 158
8.2.3 用戶注冊、登錄、下單綜合統(tǒng)計 160
8.2.4 向用戶推薦好友收藏的商品 163
8.2.5 男性和女性用戶每日訂單總金額統(tǒng)計 166
8.2.6 購買過商品1和商品2但沒有購買過商品3的用戶統(tǒng)計 168
8.2.7 每日商品1和商品2的銷量差值統(tǒng)計 169
8.2.8 根據(jù)商品銷售情況進行商品分類 170
8.2.9 查詢有新增用戶的日期的新增用戶數(shù)和新增用戶1日留存率 172
8.2.10 登錄次數(shù)及交易次數(shù)統(tǒng)計 174
8.2.11 統(tǒng)計每個商品各年度銷售總金額 177
8.2.12 某周內(nèi)每個商品的每日銷售情況 178
8.2.13 形成同期商品售賣分析表 180
8.2.14 國慶節(jié)期間每個商品的總收藏量和總購買量統(tǒng)計 181
8.2.15 國慶節(jié)期間各品類商品的7日動銷率和滯銷率 183
8.3 本章總結 186
第9章 高級函數(shù) 187
9.1 表生成函數(shù) 187
9.1.1 常用UDTF 187
9.1.2 案例演示 190
9.2 窗口函數(shù) 192
9.2.1 語法講解 192
9.2.2 常用窗口函數(shù) 197
9.2.3 案例演示 200
9.3 用戶自定義函數(shù) 208
9.3.1 概述 208
9.3.2 自定義UDF函數(shù)案例 209
9.4 本章總結 211
第10章 綜合案例練習之高級函數(shù) 212
10.1 高級函數(shù)練習題 212
10.1.1 查詢各品類銷售商品的種類數(shù)及銷量最高的商品 212
10.1.2 查詢首次下單后第二日連續(xù)下單的用戶比率 215
10.1.3 每件商品銷售首年的年份、銷售數(shù)量和銷售總金額 218
10.1.4 查詢所有用戶連續(xù)登錄2日及以上的日期區(qū)間 220
10.1.5 訂單金額趨勢分析 223
10.1.6 查詢每名用戶登錄日期的最大空檔期 225
10.1.7 查詢同一時間多地登錄的用戶 227
10.1.8 銷售總金額完成任務指標的商品 230
10.1.9 各品類中商品價格的中位數(shù) 232
10.1.10 求商品連續(xù)售賣的時間區(qū)間 234
10.1.11 根據(jù)活躍間隔對用戶進行分級的結果統(tǒng)計 237
10.2 面試真題 239
10.2.1 同時在線人數(shù)問題 239
10.2.2 會話劃分問題 242
10.2.3 間斷連續(xù)登錄用戶問題 247
10.2.4 日期交叉問題 251
10.3 本章總結 255
第11章 分區(qū)表和分桶表 256
11.1 分區(qū)表 256
11.1.1 分區(qū)表基本語法 256
11.1.2 二級分區(qū)表 258
11.1.3 動態(tài)分區(qū) 259
11.2 分桶表 260
11.2.1 分桶表基本語法 260
11.2.2 分桶排序表 261
11.3 本章總結 262
第12章 文件格式和壓縮 263
12.1 文件格式 263
12.1.1 Text Flile 263
12.1.2 ORC 263
12.1.3 Parquet 265
12.2 壓縮 266
12.2.1 壓縮算法概述 266
12.2.2 Hive表數(shù)據(jù)進行壓縮 267
12.2.3 計算過程中使用壓縮 267
12.3 本章總結 268
第13章 MapReduce引擎下的企業(yè)級性能調(diào)優(yōu) 269
13.1 測試數(shù)據(jù)準備 269
13.1.1 訂單表(2000萬條數(shù)據(jù)) 269
13.1.2 支付表(600萬條數(shù)據(jù)) 270
13.1.3 商品信息表(100萬條數(shù)據(jù)) 271
13.1.4 省(區(qū)、市)信息表(34條數(shù)據(jù)) 271
13.2 計算資源配置調(diào)優(yōu) 272
13.2.1 YARN資源配置調(diào)優(yōu) 272
13.2.2 MapReduce資源配置調(diào)優(yōu) 273
13.3 使用Explain命令查看執(zhí)行計劃 274
13.3.1 基本語法 274
13.3.2 案例實操 274
13.3.3 執(zhí)行計劃分析 278
13.4 分組聚合 281
13.4.1 優(yōu)化說明 281
13.4.2 優(yōu)化案例 282
13.5 Join優(yōu)化 284
13.5.1 Join算法概述 284
13.5.2 Map Join 287
13.5.3 Bucket Map Join 294
13.5.4 Sort Merge Bucket Map Join 297
13.6 數(shù)據(jù)傾斜 300
13.6.1 數(shù)據(jù)傾斜概述 300
13.6.2 分組聚合導致的數(shù)據(jù)傾斜 300
13.6.3 join連接導致的數(shù)據(jù)傾斜 303
13.7 任務并行度 308
13.7.1 優(yōu)化說明 308
13.7.2 優(yōu)化案例 309
13.8 小文件合并 310
13.8.1 優(yōu)化說明 310
13.8.2 優(yōu)化案例 311
13.9 其他性能優(yōu)化手段 312
13.9.1 CBO優(yōu)化 312
13.9.2 謂詞下推 313
13.9.3 矢量化查詢 314
13.9.4 Fetch抓取 315
13.9.5 本地模式 315
13.9.6 并行執(zhí)行 315
13.9.7 嚴格模式 316
13.10 本章總結 316
第14章 Hive On Tez的企業(yè)級性能調(diào)優(yōu) 317
14.1 初識Hive On Tez 317
14.1.1 Tez 概述 317
14.1.2 Hive On Tez部署 318
14.2 計算資源配置 322
14.3 執(zhí)行計劃與統(tǒng)計信息 323
14.3.1 執(zhí)行計劃 323
14.3.2 統(tǒng)計信息 326
14.4 任務并行度 327
14.4.1 優(yōu)化說明 327
14.4.2 Reducer并行度優(yōu)化案例 329
14.5 分組聚合 330
14.6 Join 330
14.6.1 Join算法 330
14.6.2 Hive On Tez中Join算法的實現(xiàn) 334
14.6.3 Hive On Tez中Join算法的選擇策略 337
14.6.4 優(yōu)化案例 338
14.7 小文件合并 341
14.7.1 優(yōu)化說明 341
14.7.2 優(yōu)化案例 342
14.8 數(shù)據(jù)傾斜 343
14.9 本章總結 344
第15章 Hive On Spark的企業(yè)級性能調(diào)優(yōu) 345
15.1 Hive On Spark概述 345
15.1.1 什么是Spark 345
15.1.2 Spark的基本架構 346
15.1.3 Hive On Spark的安裝部署 347
15.2 Spark資源配置 349
15.2.1 Excutor配置說明 349
15.2.2 Driver配置說明 351
15.2.3 Spark配置實操 351
15.3 使用Explain命令查看執(zhí)行計劃 352
15.4 分組聚合優(yōu)化 355
15.5 Join優(yōu)化 356
15.6 數(shù)據(jù)傾斜優(yōu)化 356
15.7 計算引擎總結 356
15.8 本章總結 358