本書以Spark大數(shù)據(jù)分析的常用技術與真實項目相結合的方式,深入淺出地介紹Spark大數(shù)據(jù)分析的重要內(nèi)容。全書共8個項目,內(nèi)容包括廣告流量檢測違規(guī)識別流程分析、Spark大數(shù)據(jù)環(huán)境安裝搭建、基于Hive實現(xiàn)廣告流量檢測數(shù)據(jù)存儲、基于Spark SQL實現(xiàn)廣告流量檢測數(shù)據(jù)探索分析、基于Spark SQL實現(xiàn)廣告流量檢測數(shù)據(jù)預處理、基于Spark MLlib實現(xiàn)廣告流量檢測違規(guī)識別模型構建與評估、基于Spark開發(fā)環(huán)境實現(xiàn)廣告流量檢測違規(guī)識別,以及基于TipDM大數(shù)據(jù)挖掘建模平臺實現(xiàn)廣告流量檢測違規(guī)識別。本書項目2~項目7都包含知識測試和技能測試,通過練習和操作實踐,讀者可鞏固所學的內(nèi)容。
本書可以作為大數(shù)據(jù)分析相關課程的教材,也可以作為數(shù)據(jù)分析愛好者的自學用書。
落實立德樹人根本任務。本書每個項目都融入素質(zhì)目標,教導學生遵紀守法,養(yǎng)成敬業(yè)、精益、專注、創(chuàng)新的工匠精神,樹立正確的職業(yè)觀念。
企業(yè)真實項目貫穿全書。本書通過一個企業(yè)真實項目,按照大數(shù)據(jù)分析的流程詳細地講解需求分析、數(shù)據(jù)存儲、數(shù)據(jù)探索分析、數(shù)據(jù)預處理、模型構建與評估以及模型應用等環(huán)節(jié)。
以項目為導向。本書項目均由項目背景、項目目標、目標分析、知識準備、項目實施、項目總結等構成,讓讀者對實際項目的流程有初步的認識。
將拓展與鞏固結合。本書每個項目(項目1、項目8除外)均包含技能拓展,用于講解項目中沒有涉及的知識,以豐富讀者的知識。在每個項目(項目1、項目8除外)的最后添加知識測試和技能測試,以幫助讀者鞏固所學知識,實現(xiàn)真正理解并應用所學知識。
鄭浩森,男,湛江幼兒師范?茖W校,數(shù)學系主任,大數(shù)據(jù)技術專業(yè)負責人,廣東省數(shù)學會理事、廣東省工業(yè)與應用數(shù)學學會理事會理事、廣東省現(xiàn)場統(tǒng)計學會理事、廣東省數(shù)學會高職高專分會常務理事,研究方向為智能計算技術,擔任大數(shù)據(jù)技術專業(yè)多門課程,主持或參與省部級課題多項,全國大學生數(shù)學建模(廣東省分賽)優(yōu)秀指導教師。 張良均,高級信息系統(tǒng)項目管理師,泰迪杯全國大學生數(shù)據(jù)挖掘競賽(www.tipdm.org)的發(fā)起人。華南師范大學、廣東工業(yè)大學兼職教授,廣東省工業(yè)與應用數(shù)學學會理事。兼有大型高科技企業(yè)和高校的工作經(jīng)歷,主要從事大數(shù)據(jù)挖掘及其應用的策劃、研發(fā)及咨詢培訓。全國計算機技術與軟件專業(yè)技術資格(水平)考試繼續(xù)教育和CDA數(shù)據(jù)分析師培訓講師。發(fā)表數(shù)據(jù)挖掘相關論文數(shù)二十余篇,已取得國家發(fā)明專利12項,主編圖書《神經(jīng)網(wǎng)絡實用教程》、《數(shù)據(jù)挖掘:實用案例分析》、《MATLAB數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》等9本暢銷圖書,主持并完成科技項目9項。獲得SAS、SPSS數(shù)據(jù)挖掘認證及Hadoop開發(fā)工程師證書,具有電力、電信、銀行、制造企業(yè)、電子商務和電子政務的項目經(jīng)驗和行業(yè)背景。
項目1 廣告流量檢測違規(guī)識別流程分析 1
【教學目標】 1
【思維導圖】 1
【項目背景】 2
【項目目標】 2
【目標分析】 2
【知識準備】 2
一、認識大數(shù)據(jù) 2
(一)大數(shù)據(jù)的概念 3
(二)大數(shù)據(jù)的特征 3
二、認識大數(shù)據(jù)分析 4
(一)大數(shù)據(jù)分析的概念 4
(二)大數(shù)據(jù)分析的流程 5
(三)大數(shù)據(jù)分析的工具 6
【項目實施】 7
任務一 了解正常的廣告投放流程 7
任務二 了解廣告流量違規(guī)現(xiàn)狀 8
任務三 了解廣告流量常見違規(guī)方式 9
任務四 了解識別虛假流量的常見維度 9
(一)基本屬性 9
(二)產(chǎn)品參與度 10
任務五 廣告流量檢測違規(guī)識別流程分析 11
【項目總結】 12
項目2 Spark大數(shù)據(jù)環(huán)境安裝搭建 13
【教學目標】 13
【思維導圖】 13
【項目背景】 14
【項目目標】 14
【目標分析】 14
【知識準備】 14
一、Hadoop大數(shù)據(jù)框架 14
(一)Hadoop簡介 14
(二)Hadoop的發(fā)展歷程 15
(三)Hadoop的特點 16
(四)Hadoop生態(tài)系統(tǒng) 16
(五)Hadoop的應用場景 17
二、Hive數(shù)據(jù)倉庫工具 18
(一)Hive簡介 18
(二)Hive的特點 18
(三)Hive的應用場景 19
(四)Hive與關系數(shù)據(jù)庫的區(qū)別 19
三、Spark分布式計算框架 20
(一)Spark簡介 20
(二)Spark的發(fā)展歷程 21
(三)Spark的特點 21
(四)Spark生態(tài)系統(tǒng) 23
(五)Spark的應用場景 24
【項目實施】 24
任務一 安裝搭建Hadoop集群 24
(一)創(chuàng)建Linux虛擬機 26
(二)設置固定IP地址 31
(三)遠程連接虛擬機 33
(四)配置本地yum源及安裝常用軟件 36
(五)在Linux系統(tǒng)下安裝Java 40
(六)修改配置文件 41
(七)克隆虛擬機 45
(八)配置SSH免密登錄 48
(九)配置時間同步服務 49
(十)添加地址映射 52
(十一)啟動關閉集群 52
任務二 安裝搭建Hive 54
(一)安裝MySQL 54
(二)下載和安裝Hive 59
(三)修改Hive配置文件 59
(四)設置環(huán)境變量 60
(五)初始化元數(shù)據(jù)庫與啟動Hive 61
任務三 安裝搭建Spark集群 62
(一)解壓并配置Spark集群 62
(二)啟動Spark集群 63
(三)查看Spark監(jiān)控服務 64
【項目總結】 65
【技能拓展】 65
【知識測試】 66
【技能測試】 67
測試 修改master虛擬機的IP地址 67
項目3 基于Hive實現(xiàn)廣告流量檢測數(shù)據(jù)存儲 69
【教學目標】 69
【思維導圖】 70
【項目背景】 70
【項目目標】 71
【目標分析】 71
【知識準備】 71
一、了解Hive中的數(shù)據(jù)類型 71
二、創(chuàng)建與管理數(shù)據(jù)庫 72
(一)創(chuàng)建數(shù)據(jù)庫語法格式 72
(二)刪除數(shù)據(jù)庫語法格式 73
(三)更改數(shù)據(jù)庫語法格式 74
(四)使用數(shù)據(jù)庫語法格式 74
三、創(chuàng)建表 74
(一)創(chuàng)建內(nèi)部表 76
(二)創(chuàng)建外部表 77
(三)創(chuàng)建分區(qū)表 79
(四)創(chuàng)建桶表 79
四、修改表 80
五、導入數(shù)據(jù)至Hive表 83
(一)將文件系統(tǒng)中的數(shù)據(jù)導入Hive表 83
(二)通過查詢語句向表中插入數(shù)據(jù) 84
六、導出Hive表中的數(shù)據(jù) 87
(一)將Hive表中的數(shù)據(jù)導出至本地文件系統(tǒng) 87
(二)將Hive表中的數(shù)據(jù)導出至HDFS 87
【項目實施】 88
任務一 創(chuàng)建數(shù)據(jù)表 88
(一)數(shù)據(jù)字段說明 88
(二)創(chuàng)建Hive表 89
任務二 導入數(shù)據(jù)至Hive表 92
【項目總結】 93
【技能拓展】 93
【知識測試】 95
【技能測試】 96
測試 某連鎖咖啡店經(jīng)營情況數(shù)據(jù)存儲 96
項目4 基于Spark SQL實現(xiàn)廣告流量檢測數(shù)據(jù)探索分析 98
【教學目標】 98
【思維導圖】 99
【項目背景】 99
【項目目標】 99
【目標分析】 100
【知識準備】 100
一、認識Spark SQL框架 100
(一)Spark SQL簡介 100
(二)配置Spark SQL CLI 102
(三)Spark SQL與Shell交互 103
二、創(chuàng)建DataFrame對象 103
(一)通過結構化數(shù)據(jù)文件創(chuàng)建DataFrame 104
(二)通過外部數(shù)據(jù)庫創(chuàng)建DataFrame 105
(三)通過RDD創(chuàng)建DataFrame 105
(四)通過Hive表創(chuàng)建DataFrame 106
三、查看DataFrame數(shù)據(jù) 107
(一)printSchema():輸出數(shù)據(jù)模式 108
(二)show():查看數(shù)據(jù) 108
(三)first()、head()、take()、takeAsList():獲取若干行記錄 109
四、掌握DataFrame行列表查詢操作 110
(一)條件查詢 111
(二)查詢指定字段的數(shù)據(jù)信息 111
(三)查詢指定行數(shù)的數(shù)據(jù) 113
(四)排序查詢 114
(五)分組查詢 115
【項目實施】 116
任務一 讀取數(shù)據(jù)創(chuàng)建DataFrame對象 116
任務二 簡單查詢DataFrame數(shù)據(jù) 116
(一)查詢數(shù)據(jù)記錄數(shù) 116
(二)查詢數(shù)據(jù)缺失值 117
任務三 探索分析日流量特征 119
任務四 探索分析IP地址的訪問次數(shù)特征 120
任務五 探索分析虛假流量數(shù)據(jù)特征 120
【項目總結】 124
【技能拓展】 124
【知識測試】 125
【技能測試】 126
測試1 使用DataFrame查詢操作分析員工基本信息 126
測試2 使用DataFrame查詢操作分析圖書信息 127
項目5 基于Spark SQL實現(xiàn)廣告流量檢測數(shù)據(jù)預處理 129
【教學目標】 129
【思維導圖】 130
【項目背景】 130
【項目目標】 130
【目標分析】 130
【知識準備】 131
一、掌握DataFrame行列表增、刪操作 131
(一)新增數(shù)據(jù)列 131
(二)刪除數(shù)據(jù)列 132
二、創(chuàng)建與使用用戶自定義函數(shù) 133
三、掌握DataFrame表聯(lián)合操作 135
(一)5種join()方法 135
(二)根據(jù)特定字段進行表聯(lián)合操作 136
(三)指定類型進行表聯(lián)合操作 137
(四)使用Column類型進行表聯(lián)合操作 137
四、掌握DataFrame行列表輸出操作 138
(一)保存為文件 138
(二)保存為持久化的表 139
【項目實施】 140
任務一 使用drop語句刪除數(shù)據(jù) 140
任務二 自定義函數(shù)構建關鍵特征 140
(一)劃分時間區(qū)間 141
(二)構建關鍵特征并保存至Hive表中 142
任務三 保存DataFrame數(shù)據(jù)至Hive表中 143
【項目總結】 144
【技能拓展】 144
【知識測試】 145
【技能測試】 146
測試 基于Hive的人力資源系統(tǒng)數(shù)據(jù)處理 146
項目6 基于Spark MLlib實現(xiàn)廣告流量檢測違規(guī)識別模型構建與評估 149
【教學目標】 149
【思維導圖】 150
【項目背景】 150
【項目目標】 151
【目標分析】 151
【知識準備】 151
一、認識Spark MLlib算法庫 151
(一)了解機器學習算法 152
(二)Spark MLlib簡介 154
二、掌握Spark MLlib中的算法與算法包 155
(一)數(shù)據(jù)類型 155
(二)基本統(tǒng)計 155
(三)管道 157
(四)特征提取 158
(五)特征處理 160
(六)回歸 163
(七)分類 165
(八)聚類 169
(九)關聯(lián)規(guī)則 170
(十)智能推薦 171
三、掌握Spark MLlib的評估器與模型評估 173
【項目實施】 175
任務一 數(shù)據(jù)歸一化 175
任務二 構建建模樣本 176
任務三 使用spark.ml.classification模塊構建分類模型 176
(一)使用邏輯回歸算法實現(xiàn)廣告流量檢測違規(guī)識別 176
(二)使用隨機森林算法實現(xiàn)廣告流量檢測違規(guī)識別 177
任務四 使用評估器實現(xiàn)模型評估 178
(一)模型評估 178
(二)模型評估結果對比 179
【項目總結】 179
【技能拓展】 179
【知識測試】 181
【技能測試】 182
測試 基于Spark MLlib實現(xiàn)新聞分類 182
項目7 基于Spark開發(fā)環(huán)境實現(xiàn)廣告流量檢測違規(guī)識別 184
【教學目標】 184
【思維導圖】 184
【項目背景】 185
【項目目標】 185
【目標分析】 185
【知識準備】 185
一、搭建Java開發(fā)環(huán)境 185
(一)安裝JDK 8 185
(二)設置環(huán)境變量 187
二、搭建Spark開發(fā)環(huán)境 189
(一)下載與安裝IntelliJ IDEA 189
(二)Scala插件安裝與使用 192
(三)在IntelliJ IDEA中配置Spark運行環(huán)境 196
(四)運行Spark程序 198
【項目實施】 206
任務一 開發(fā)環(huán)境下實現(xiàn)流量數(shù)據(jù)違規(guī)識別 206
(一)集群連接參數(shù)設置 206
(二)封裝代碼 207
(三)運行Spark程序 210
任務二 模型應用 210
【項目總結】 211
【技能拓展】 212
【知識測試】 214
【技能測試】 215
測試 農(nóng)產(chǎn)品銷售分析 215
項目8 基于TipDM大數(shù)據(jù)挖掘建模平臺實現(xiàn)廣告流量檢測違規(guī)識別 217
【教學目標】 217
【思維導圖】 217
【項目背景】 218
【項目目標】 218
【目標分析】 218
【知識準備】 218
平臺簡介 218
(一)共享庫 219
(二)數(shù)據(jù)連接 219
(三)數(shù)據(jù)集 220
(四)我的工程 220
(五)個人組件 223
【項目實施】 224
任務 快速構建廣告流量檢測違規(guī)識別工程 224
(一)數(shù)據(jù)源配置 225
(二)數(shù)據(jù)處理 227
(三)模型構建與評估 232
【項目總結】 235
參考文獻 236