大數(shù)據(jù)實(shí)訓(xùn)案例——電影推薦系統(tǒng)(Scala版)
定 價:45 元
- 作者:林子雨
- 出版時間:2019/5/1
- ISBN:9787115503060
- 出 版 社:人民郵電出版社
- 中圖法分類:J94-39
- 頁碼:180
- 紙張:
- 版次:01
- 開本:16開
本書詳細(xì)介紹了一個大數(shù)據(jù)應(yīng)用案例——電影推薦系統(tǒng)(Scala版),案例涉及數(shù)據(jù)預(yù)處理、數(shù)據(jù)存儲與管理、數(shù)據(jù)分析和數(shù)據(jù)可視化等流程,涵蓋Linux、MySQL、Hadoop、Spark、IntelliJ IDEA、Spring等系統(tǒng)和軟件的安裝與使用方法。案例采用的編程語言是Scala和Java。
本書是廈門大學(xué)作者團(tuán)隊(duì)長期經(jīng)驗(yàn)總結(jié)的結(jié)晶。本書是在廈門大學(xué)《大數(shù)據(jù)技術(shù)原理與應(yīng)用》入門級大數(shù)據(jù)教材的基礎(chǔ)之上編寫的。為了確保教程質(zhì)量,在編著出版紙質(zhì)教材之前,實(shí)驗(yàn)室已經(jīng)于2016年10月通過實(shí)驗(yàn)室官網(wǎng)免費(fèi)發(fā)布共享了簡化版的Spark在線教程和相關(guān)教學(xué)資源,同時,該在線教程也已經(jīng)用于廈門大學(xué)計算機(jī)科學(xué)系研究生的大數(shù)據(jù)課程教學(xué),并成為全國高校大數(shù)據(jù)課程教師培訓(xùn)交流班的授課內(nèi)容。實(shí)驗(yàn)室根據(jù)讀者對在線Spark教程的大量反饋意見以及教學(xué)實(shí)踐中發(fā)現(xiàn)的問題,對Spark在線教程進(jìn)行了多次修正和完善,所有這些前期準(zhǔn)備工作,都為紙質(zhì)教材的編著出版打下了堅實(shí)的基礎(chǔ)。
林子雨(1978-),男,博士,廈門大學(xué)計算機(jī)科學(xué)系助理教授,廈門大學(xué)云計算與大數(shù)據(jù)研究中心創(chuàng)始成員,廈門大學(xué)數(shù)據(jù)庫實(shí)驗(yàn)室負(fù)責(zé)人,中國計算機(jī)學(xué)會數(shù)據(jù)庫專委會委員,中國計算機(jī)學(xué)會信息系統(tǒng)專委會委員。于2001年獲得福州大學(xué)水利水電專業(yè)學(xué)士學(xué)位,2005年獲得廈門大學(xué)計算機(jī)專業(yè)碩士學(xué)位,2009年獲得北京大學(xué)計算機(jī)專業(yè)博士學(xué)位。中國高校首個“數(shù)字教師”提出者和建設(shè)者(http://www.cs.xmu.edu.cn/linziyu),2009年至今,“數(shù)字教師”大平臺累計向網(wǎng)絡(luò)免費(fèi)發(fā)布超過500萬字高價值的教學(xué)和科研資料,累計網(wǎng)絡(luò)訪問量超過500萬次。 主要研究方向?yàn)閿?shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)挖掘和大數(shù)據(jù),發(fā)表期刊和會議學(xué)術(shù)論文多篇,并作為課題負(fù)責(zé)人主持了1項(xiàng)國家自然科學(xué)基金、1項(xiàng)福建省自然科學(xué)基金項(xiàng)目和1項(xiàng)福建省教改課題。曾作為志愿者翻譯了Google Spanner、BigTable和《Architecture of a Database System》等大量英文學(xué)術(shù)資料,與廣大網(wǎng)友分享,深受歡迎。2013年開始在廈門大學(xué)開設(shè)大數(shù)據(jù)課程,并因在教學(xué)領(lǐng)域的突出貢獻(xiàn)和學(xué)生的認(rèn)可,成為2013年度和2017年度廈門大學(xué)教學(xué)類獎教金獲得者。獲得2017年福建省精品在線開放課程、2018年廈門大學(xué)高等教育教學(xué)成果特等獎、2018年福建省高等教育教學(xué)成果二等獎。 主講課程:《大數(shù)據(jù)處理技術(shù)》。 個人主頁:http://www.cs.xmu.edu.cn/linziyu。 E-mail: ziyulin@xmu.edu.cn。 數(shù)據(jù)庫實(shí)驗(yàn)室網(wǎng)站:http://dblab.xmu.edu.cn。 建設(shè)了高校大數(shù)據(jù)課程公共服務(wù)平臺(http://dblab.xmu.edu.cn/post/bigdata-teaching- platform/),成為全國高校大數(shù)據(jù)教學(xué)知名品牌。平臺為教師教學(xué)和學(xué)生學(xué)習(xí)大數(shù)據(jù)課程提供包括教學(xué)大綱、講義PPT、學(xué)習(xí)指南、備課指南、實(shí)驗(yàn)指南、上機(jī)習(xí)題、授課視頻、技術(shù)資料等全方位、一站式免費(fèi)服務(wù),平臺年訪問量超過100萬次,同時提供面向高校的大數(shù)據(jù)實(shí)驗(yàn)平臺建設(shè)方案和大數(shù)據(jù)課程師資培訓(xùn)服務(wù)。
第1章 案例概述 1
1.1 案例目的 1
1.2 適用對象 1
1.3 時間安排 2
1.4 預(yù)備知識 2
1.5 硬件要求 2
1.6 軟件工具 3
1.7 數(shù)據(jù)集 3
1.8 案例任務(wù) 3
1.9 實(shí)驗(yàn)步驟 4
1.10 在線資源 6
1.10.1 在線資源一覽表 6
1.10.2 下載專區(qū) 7
1.10.3 先修課程 8
1.10.4 大數(shù)據(jù)課程公共服務(wù)平臺 8
1.11 本章小結(jié) 9
第2章 大數(shù)據(jù)實(shí)驗(yàn)環(huán)境搭建 10
2.1 Linux系統(tǒng)及相關(guān)軟件使用方法 10
2.1.1 Shell 11
2.1.2 root用戶 11
2.1.3 創(chuàng)建普通用戶 11
2.1.4 sudo命令 12
2.1.5 常用的Linux系統(tǒng)命令 12
2.1.6 文件解壓縮 13
2.1.7 常用的目錄 13
2.1.8 目錄的權(quán)限 14
2.1.9 更新APT 14
2.1.10 切換中英文輸入法 15
2.1.11 vim編輯器的安裝和使用方法 16
2.2 JDK的安裝 16
2.3 Scala的安裝 17
2.4 Hadoop的安裝和基本使用方法 18
2.4.1 安裝Hadoop前的準(zhǔn)備工作 18
2.4.2 安裝Hadoop 20
2.4.3 HDFS操作常用Shell命令 23
2.5 Spark的安裝和基本使用方法 25
2.5.1 下載安裝文件 25
2.5.2 配置相關(guān)文件 26
2.5.3 Spark和Hadoop的交互 26
2.5.4 在spark-shell中運(yùn)行代碼 27
2.6 MySQL數(shù)據(jù)庫的安裝和基本
使用方法 29
2.6.1 安裝MySQL 29
2.6.2 MySQL常用操作 32
2.7 本章小結(jié) 34
第3章 IntelliJ IDEA開發(fā)工具的安裝和使用方法 35
3.1 下載和安裝IDEA 35
3.2 下載Scala插件安裝包 35
3.3 啟動IDEA 36
3.4 為IDEA安裝Scala插件 39
3.5 配置項(xiàng)目的JDK 42
3.6 使用IDEA開發(fā)WordCount程序 44
3.6.1 創(chuàng)建一個新項(xiàng)目WordCount 45
3.6.2 為WordCount項(xiàng)目添加Scala框架支持 47
3.6.3 設(shè)置項(xiàng)目目錄 50
3.6.4 新建Scala代碼文件 52
3.6.5 配置pom.xml文件 53
3.6.6 更新Maven的依賴文件 55
3.6.7 運(yùn)行WordCount程序 56
3.6.8 打包WordCount程序生成
JAR包 57
3.6.9 把JAR包提交到Spark中運(yùn)行 61
3.7 本章小結(jié) 61
第4章 ETL工具Kettle的安裝和
使用方法 62
4.1 安裝Kettle 62
4.1.1 下載安裝包 62
4.1.2 解壓文件到安裝目錄 62
4.1.3 復(fù)制MySQL數(shù)據(jù)庫驅(qū)動程序
JAR包 63
4.1.4 啟動Kettle中的Spoon 63
4.1.5 設(shè)置中文界面 65
4.2 使用Kettle把數(shù)據(jù)加載到HDFS中 65
4.2.1 配置Kettle 66
4.2.2 新建作業(yè) 66
4.2.3 添加START組件 67
4.2.4 添加“Hadoop Copy Files”控件 68
4.2.5 設(shè)置“Hadoop Copy Files”
控件的屬性 68
4.2.6 執(zhí)行作業(yè)并查看運(yùn)行結(jié)果 69
4.2.7 到HDFS中查看數(shù)據(jù) 70
4.3 本章小結(jié) 70
第5章 使用Spark SQL讀寫
MySQL數(shù)據(jù)庫的方法 71
5.1 Spark SQL概述 71
5.2 創(chuàng)建MySQL數(shù)據(jù)庫 72
5.3 在spark-shell交互式環(huán)境中
讀寫MySQL數(shù)據(jù)庫 72
5.3.1 讀取MySQL數(shù)據(jù)庫中的數(shù)據(jù) 73
5.3.2 向MySQL數(shù)據(jù)庫寫入數(shù)據(jù) 74
5.4 編寫?yīng)毩?yīng)用程序讀寫MySQL
數(shù)據(jù)庫 75
5.4.1 新建項(xiàng)目 75
5.4.2 設(shè)置依賴包 76
5.4.3 設(shè)置代碼目錄 78
5.4.4 新建Scala代碼文件 79
5.4.5 配置pom.xml文件 80
5.4.6 編譯運(yùn)行程序 82
5.4.7 生成應(yīng)用程序JAR包 83
5.4.8 把JAR包提交到Spark中運(yùn)行 85
5.5 本章小結(jié) 86
第6章 使用Spark MLlib實(shí)現(xiàn)協(xié)同
過濾算法 87
6.1 推薦系統(tǒng)概述 87
6.1.1 什么是推薦系統(tǒng) 87
6.1.2 長尾理論 88
6.1.3 推薦方法 88
6.1.4 推薦系統(tǒng)模型 89
6.1.5 推薦系統(tǒng)的應(yīng)用 89
6.2 協(xié)同過濾算法 90
6.2.1 基于用戶的協(xié)同過濾 90
6.2.2 基于物品的協(xié)同過濾 91
6.2.3 UserCF算法和ItemCF算法的
對比 92
6.2.4 基于模型的協(xié)同過濾 92
6.3 Spark MLlib中的協(xié)同過濾算法 92
6.3.1 ALS算法的基本原理 93
6.3.2 在spark-shell中運(yùn)行ALS算法 95
6.3.3 編寫?yīng)毩?yīng)用程序運(yùn)行ALS
算法 99
6.4 本章小結(jié) 103
第7章 Node.js的安裝和使用
方法 104
7.1 Node.js的安裝 104
7.2 創(chuàng)建Node.js應(yīng)用 105
7.2.1 引入Node.js模塊 105
7.2.2 創(chuàng)建服務(wù)器 105
7.2.3 接收請求與響應(yīng)請求 106
7.3 使用Express框架和Jade模板引擎 106
7.3.1 創(chuàng)建項(xiàng)目目錄 106
7.3.2 安裝Express開發(fā)框架 107
7.3.3 安裝Jade模板引擎 107
7.3.4 創(chuàng)建服務(wù)器 107
7.3.5 創(chuàng)建模板文件 107
7.3.6 測試網(wǎng)頁 108
7.4 實(shí)例1:設(shè)計網(wǎng)頁實(shí)現(xiàn)用戶注冊登錄
功能 108
7.4.1 創(chuàng)建MySQL數(shù)據(jù)庫 108
7.4.2 創(chuàng)建項(xiàng)目目錄 109
7.4.3 安裝Express開發(fā)框架 109
7.4.4 安裝MySQL驅(qū)動模塊 109
7.4.5 創(chuàng)建服務(wù)器 109
7.4.6 創(chuàng)建網(wǎng)頁 111
7.4.7 測試網(wǎng)頁 112
7.5 實(shí)例2:采用Jade模板引擎實(shí)現(xiàn)
用戶注冊登錄功能 113
7.5.1 創(chuàng)建項(xiàng)目目錄 113
7.5.2 安裝Express開發(fā)框架 113
7.5.3 安裝Jade模板引擎 114
7.5.4 安裝MySQL驅(qū)動模塊 114
7.5.5 安裝body-parser模塊 114
7.5.6 創(chuàng)建服務(wù)器 114
7.5.7 創(chuàng)建網(wǎng)頁模板文件 116
7.5.8 測試網(wǎng)頁 116
7.6 實(shí)例3:通過網(wǎng)頁調(diào)用詞頻統(tǒng)計應(yīng)用
程序 118
7.6.1 創(chuàng)建項(xiàng)目目錄 119
7.6.2 安裝Express開發(fā)框架 119
7.6.3 創(chuàng)建服務(wù)器 119
7.6.4 安裝Jade模板引擎 119
7.6.5 為應(yīng)用入口index.js增加路由等
功能 121
7.6.6 在網(wǎng)頁中調(diào)用程序并展現(xiàn)結(jié)果 123
7.7 本章小結(jié) 124
第8章 電影推薦系統(tǒng)(基礎(chǔ)版)的
實(shí)現(xiàn)過程 125
8.1 數(shù)據(jù)分析整體過程 125
8.2 把數(shù)據(jù)集加載到HDFS中 126
8.2.1 數(shù)據(jù)集基本情況 126
8.2.2 數(shù)據(jù)集下載 127
8.2.3 使用Kettle工具清洗數(shù)據(jù)并加載到HDFS中 127
8.3 編寫Spark程序?qū)崿F(xiàn)電影推薦 134
8.3.1 新建項(xiàng)目 134
8.3.2 設(shè)置依賴包 136
8.3.3 設(shè)置代碼目錄 137
8.3.4 新建Scala代碼文件 137
8.3.5 配置pom.xml文件 141
8.3.6 編譯運(yùn)行程序 142
8.3.7 生成應(yīng)用程序JAR包 145
8.3.8 把JAR包提交到Spark中運(yùn)行 147
8.4 使用Node.js在網(wǎng)頁中展現(xiàn)結(jié)果 148
8.4.1 創(chuàng)建項(xiàng)目目錄 148
8.4.2 安裝相關(guān)模塊 148
8.4.3 創(chuàng)建服務(wù)器 148
8.4.4 添加模板文件 149
8.4.5 在網(wǎng)頁中調(diào)用程序并展現(xiàn)結(jié)果 150
8.5 本章小結(jié) 151
第9章 電影推薦系統(tǒng)(升級版)的
設(shè)計與實(shí)現(xiàn) 152
9.1 系統(tǒng)概述 152
9.2 系統(tǒng)總體設(shè)計 153
9.3 數(shù)據(jù)庫的設(shè)計與實(shí)現(xiàn) 153
9.3.1 數(shù)據(jù)庫設(shè)計 153
9.3.2 數(shù)據(jù)庫實(shí)現(xiàn) 154
9.4 Spark程序的設(shè)計與實(shí)現(xiàn) 155
9.4.1 新建項(xiàng)目 156
9.4.2 新建Scala代碼文件 156
9.4.3 配置pom.xml文件 161
9.4.4 運(yùn)行程序 163
9.4.5 生成應(yīng)用程序JAR包 165
9.5 系統(tǒng)網(wǎng)站的設(shè)計與實(shí)現(xiàn) 166
9.5.1 系統(tǒng)網(wǎng)站的設(shè)計 166
9.5.2 系統(tǒng)網(wǎng)站的實(shí)現(xiàn) 168
9.6 本章小結(jié) 179
參考文獻(xiàn) 180