本書以廣電大數(shù)據(jù)案例為主線,系統(tǒng)介紹數(shù)據(jù)倉庫Hive存儲和初步處理方法的相關知識。本書條理清楚、重點突出,內容循序漸進、由淺入深。本書共8章,包括廣電大數(shù)據(jù)用戶畫像需求分析、部署開發(fā)環(huán)境、廣電用戶數(shù)據(jù)存儲、廣電用戶基本數(shù)據(jù)簡單查詢、廣電用戶賬單與訂單數(shù)據(jù)查詢進階、廣電用戶收視行為數(shù)據(jù)查詢優(yōu)化、廣電用戶數(shù)據(jù)清洗及數(shù)據(jù)導出,以及廣電用戶數(shù)據(jù)存儲與處理的程序開發(fā)。本書大部分章包含實訓和課后習題,通過練習和操作實踐,幫助讀者鞏固所學的內容。
本書可以作為高等院校數(shù)據(jù)科學或大數(shù)據(jù)相關專業(yè)的教材,也可以作為大數(shù)據(jù)愛好者的自學用書。
將理論與實踐結合。本書以知識點和廣電大數(shù)據(jù)案例為主線,介紹在大數(shù)據(jù)技術中Hive的主要用法。
以任務為導向。本書從知識點到實操,再到具體的項目,讓讀者明白如何利用所學知識來解決問題,通過實訓和課后習題幫助讀者鞏固所學知識,從而使讀者真正理解并應用所學知識。
注重啟發(fā)式教學。本書內容圍繞利用Hive處理大數(shù)據(jù)的流程展開,不堆砌知識點,著重于思路的啟發(fā)與解決方案的實施。通過對從任務需求到實現(xiàn)這一完整工作流程的體驗,讀者將真正理解并掌握Hive大數(shù)據(jù)存儲和處理技術。
何煌,華中科技大學院軟件工程碩士,“雙師型”專業(yè)講師,PMP項目管理師,大數(shù)據(jù)高級分析師。曾在企業(yè)從事多年系統(tǒng)研發(fā)工作,目前在廣東創(chuàng)新科技職業(yè)學院信工學院擔任軟件教研室主任,負責軟件和大數(shù)據(jù)專業(yè)教學研究工作。先后主編《計算機應用基礎》、《Java程序設計教程》《創(chuàng)新創(chuàng)業(yè)基礎教程》、《計算機應用基礎實用教程》、《信息技術基礎》等多本教材編撰工作。
第 1章 廣電大數(shù)據(jù)用戶畫像需求分析 1
任務1.1 需求分析與架構 3
1.1.1 業(yè)務需求分析 3
1.1.2 大數(shù)據(jù)存儲技術架構 4
任務1.2 認識Hive 7
1.2.1 Hive簡介 8
1.2.2 Hive的架構 8
1.2.3 Hive設計特性 10
小結 12
課后習題 13
第 2章 部署開發(fā)環(huán)境 14
任務2.1 安裝部署Hadoop集群 15
2.1.1 VMware虛擬機安裝和網(wǎng)絡設置 15
2.1.2 部署CentOS 19
2.1.3 Hadoop集群部署前準備 33
2.1.4 Hadoop集群部署 37
任務2.2 安裝部署Hive 51
2.2.1 安裝配置MySQL 52
2.2.2 安裝配置Hive 52
任務2.3 使用Hive CLI 56
2.3.1 啟動Hive CLI 56
2.3.2 在Hive中執(zhí)行Bash Shell和Hadoop dfs命令 57
2.3.3 在Shell中執(zhí)行Hive查詢 58
小結 59
課后習題 59
第3章 廣電用戶數(shù)據(jù)存儲 62
任務3.1 創(chuàng)建業(yè)務數(shù)據(jù)表 63
3.1.1 操作Hive數(shù)據(jù)庫 63
3.1.2 了解Hive數(shù)據(jù)類型 66
3.1.3 創(chuàng)建與管理Hive表 68
3.1.4 任務實現(xiàn) 78
任務3.2 將數(shù)據(jù)導入Hive表中 84
3.2.1 裝載數(shù)據(jù)至Hive表中 85
3.2.2 任務實現(xiàn) 86
小結 87
實訓 創(chuàng)建輪船乘客表并導入數(shù)據(jù)至表中 88
課后習題 89
第4章 廣電用戶基本數(shù)據(jù)簡單查詢 91
任務4.1 查詢廣電用戶的用戶編號及開戶時間 92
4.1.1 SELECT語句 93
4.1.2 任務實現(xiàn) 94
任務4.2 查詢指定用戶狀態(tài)的用戶基本數(shù)據(jù) 95
4.2.1 使用WHERE關鍵字添加查詢條件 95
4.2.2 使用WHERE關鍵字添加常見查詢條件 96
4.2.3 任務實現(xiàn) 101
任務4.3 統(tǒng)計用戶基本數(shù)據(jù)表中品牌名稱的種類數(shù) 102
4.3.1 使用DISTINCT關鍵字去重查詢 102
4.3.2 使用聚合函數(shù) 103
4.3.3 任務實現(xiàn) 105
任務4.4 統(tǒng)計不同用戶等級名稱的記錄數(shù) 105
4.4.1 設置列別名 105
4.4.2 任務實現(xiàn) 107
任務4.5 統(tǒng)計不同用戶狀態(tài)的記錄數(shù) 108
4.5.1 使用GROUP BY關鍵字分組查詢 109
4.5.2 任務實現(xiàn) 111
任務4.6 統(tǒng)計指定用戶數(shù)量范圍的用戶等級 111
4.6.1 使用HAVING關鍵字對分組結果進行篩選 111
4.6.2 任務實現(xiàn) 112
任務4.7 統(tǒng)計用戶數(shù)最多的3種用戶狀態(tài) 113
4.7.1 使用LIMIT關鍵字設置查詢結果展示 113
4.7.2 使用排序關鍵字對查詢結果排序 114
4.7.3 任務實現(xiàn) 117
任務4.8 查詢用戶發(fā)生狀態(tài)變更的時間及開戶時間 118
4.8.1 使用正則表達式查詢數(shù)據(jù) 118
4.8.2 任務實現(xiàn) 119
小結 120
實訓 查詢電商貨品訂單數(shù)據(jù) 120
課后習題 122
第5章 廣電用戶賬單與訂單數(shù)據(jù)查詢進階 124
任務5.1 統(tǒng)計訂單的消費類型 125
5.1.1 介紹Hive內置函數(shù) 125
5.1.2 使用條件函數(shù) 127
5.1.3 使用類型轉換函數(shù) 128
5.1.4 任務實現(xiàn) 129
任務5.2 統(tǒng)計用戶每年消費應付總額 130
5.2.1 使用字符函數(shù) 130
5.2.2 任務實現(xiàn) 132
任務5.3 統(tǒng)計用戶每月消費應付總額 133
5.3.1 使用日期函數(shù) 134
5.3.2 任務實現(xiàn) 137
任務5.4 統(tǒng)計用戶每月實際賬單金額 138
5.4.1 使用數(shù)學函數(shù) 138
5.4.2 任務實現(xiàn) 140
任務5.5 查詢用戶寬帶訂單的地址數(shù)據(jù) 141
5.5.1 使用JOIN語句 141
5.5.2 介紹UNION ALL關鍵字 145
5.5.3 任務實現(xiàn) 145
任務5.6 抽樣統(tǒng)計用戶訂購產(chǎn)品情況 146
5.6.1 使用桶表抽樣查詢 147
5.6.2 任務實現(xiàn) 147
小結 149
實訓 149
實訓1 查詢員工數(shù)據(jù) 149
實訓2 查詢學生數(shù)據(jù) 151
課后習題 152
第6章 廣電用戶收視行為數(shù)據(jù)查詢優(yōu)化 154
任務6.1 使用視圖統(tǒng)計不同節(jié)目的用戶觀看人數(shù) 156
6.1.1 創(chuàng)建視圖 156
6.1.2 查看與刪除視圖 157
6.1.3 任務實現(xiàn) 159
任務6.2 優(yōu)化統(tǒng)計直播頻道數(shù) 159
6.2.1 配置Fetch抓取 160
6.2.2 合理設置map和reduce任務數(shù) 161
6.2.3 配置并行執(zhí)行 164
6.2.4 任務實現(xiàn) 165
任務6.3 使用子查詢統(tǒng)計節(jié)目類型為直播的頻道Top10 166
6.3.1 使用子查詢優(yōu)化查詢語句 166
6.3.2 優(yōu)化配置GROUP BY語句 167
6.3.3 使用GROUP BY代替COUNT(DISTINCT)去重統(tǒng)計 169
6.3.4 優(yōu)化配置LIMIT語句 171
6.3.5 任務實現(xiàn) 171
小結 173
實訓 173
實訓1 統(tǒng)計某城市各線路公交車的刷卡次數(shù) 173
實訓2 統(tǒng)計某百貨商場會員總消費金額Top10 174
課后習題 175
第7章 廣電用戶數(shù)據(jù)清洗及數(shù)據(jù)導出 178
任務7.1 清洗無效用戶數(shù)據(jù) 179
7.1.1 探索無效用戶數(shù)據(jù) 179
7.1.2 刪除無效用戶數(shù)據(jù) 185
任務7.2 清洗無效收視行為數(shù)據(jù) 186
7.2.1 探索無效收視行為數(shù)據(jù) 186
7.2.2 刪除無效收視行為數(shù)據(jù) 191
任務7.3 清洗無效賬單和訂單數(shù)據(jù) 192
7.3.1 探索無效賬單數(shù)據(jù) 193
7.3.2 探索無效訂單數(shù)據(jù) 193
7.3.3 刪除無效賬單和無效訂單數(shù)據(jù) 194
任務7.4 導出處理結果至Linux本地和HDFS 194
7.4.1 使用INSERT OVERWRITE語句將數(shù)據(jù)導出至文件系統(tǒng) 194
7.4.2 保存處理結果至Linux本地和HDFS 196
小結 198
實訓 198
實訓1 刪除無效房價數(shù)據(jù) 198
實訓2 刪除惡意好評手機數(shù)據(jù)并保存結果至Linux本地 199
課后習題 199
第8章 廣電用戶數(shù)據(jù)存儲與處理的程序開發(fā) 202
任務8.1 配置Hive遠程服務 203
任務8.2 搭建Hive遠程連接環(huán)境 205
8.2.1 創(chuàng)建IDEA開發(fā)項目 205
8.2.2 添加依賴 208
8.2.3 手動加載MySQL驅動 210
8.2.4 JDBC及其主要接口 212
8.2.5 創(chuàng)建連接測試程序 215
任務8.3 編寫程序實現(xiàn)廣電數(shù)據(jù)的存儲 217
8.3.1 創(chuàng)建開發(fā)項目 217
8.3.2 創(chuàng)建HiveHelper類和連接Hive 217
8.3.3 創(chuàng)建測試類 219
8.3.4 創(chuàng)建Hive數(shù)據(jù)庫 220
8.3.5 創(chuàng)建Hive表 220
8.3.6 裝載數(shù)據(jù) 221
8.3.7 程序運行與調試 221
任務8.4 編寫程序實現(xiàn)廣電數(shù)據(jù)的查詢與處理 223
8.4.1 查詢數(shù)據(jù) 223
8.4.2 刪除無效用戶數(shù)據(jù) 225
8.4.3 刪除無效收視行為數(shù)據(jù) 226
8.4.4 刪除無效賬單和無效訂單數(shù)據(jù) 227
小結 228
實訓 228
實訓1 對Hadoop日志進行統(tǒng)計分析 228
實訓2 通過程序實現(xiàn)對某技術論壇日志的分析 229
課后習題 230