大數(shù)據(jù)實(shí)訓(xùn)案例——電影推薦系統(tǒng)(Scala版)
定 價(jià):45 元
- 作者:林子雨
- 出版時(shí)間:2019/5/1
- ISBN:9787115503060
- 出 版 社:人民郵電出版社
- 中圖法分類:J94-39
- 頁(yè)碼:180
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
本書(shū)詳細(xì)介紹了一個(gè)大數(shù)據(jù)應(yīng)用案例——電影推薦系統(tǒng)(Scala版),案例涉及數(shù)據(jù)預(yù)處理、數(shù)據(jù)存儲(chǔ)與管理、數(shù)據(jù)分析和數(shù)據(jù)可視化等流程,涵蓋Linux、MySQL、Hadoop、Spark、IntelliJ IDEA、Spring等系統(tǒng)和軟件的安裝與使用方法。案例采用的編程語(yǔ)言是Scala和Java。
本書(shū)是廈門(mén)大學(xué)作者團(tuán)隊(duì)長(zhǎng)期經(jīng)驗(yàn)總結(jié)的結(jié)晶。本書(shū)是在廈門(mén)大學(xué)《大數(shù)據(jù)技術(shù)原理與應(yīng)用》入門(mén)級(jí)大數(shù)據(jù)教材的基礎(chǔ)之上編寫(xiě)的。為了確保教程質(zhì)量,在編著出版紙質(zhì)教材之前,實(shí)驗(yàn)室已經(jīng)于2016年10月通過(guò)實(shí)驗(yàn)室官網(wǎng)免費(fèi)發(fā)布共享了簡(jiǎn)化版的Spark在線教程和相關(guān)教學(xué)資源,同時(shí),該在線教程也已經(jīng)用于廈門(mén)大學(xué)計(jì)算機(jī)科學(xué)系研究生的大數(shù)據(jù)課程教學(xué),并成為全國(guó)高校大數(shù)據(jù)課程教師培訓(xùn)交流班的授課內(nèi)容。實(shí)驗(yàn)室根據(jù)讀者對(duì)在線Spark教程的大量反饋意見(jiàn)以及教學(xué)實(shí)踐中發(fā)現(xiàn)的問(wèn)題,對(duì)Spark在線教程進(jìn)行了多次修正和完善,所有這些前期準(zhǔn)備工作,都為紙質(zhì)教材的編著出版打下了堅(jiān)實(shí)的基礎(chǔ)。
林子雨(1978-),男,博士,廈門(mén)大學(xué)計(jì)算機(jī)科學(xué)系助理教授,廈門(mén)大學(xué)云計(jì)算與大數(shù)據(jù)研究中心創(chuàng)始成員,廈門(mén)大學(xué)數(shù)據(jù)庫(kù)實(shí)驗(yàn)室負(fù)責(zé)人,中國(guó)計(jì)算機(jī)學(xué)會(huì)數(shù)據(jù)庫(kù)專委會(huì)委員,中國(guó)計(jì)算機(jī)學(xué)會(huì)信息系統(tǒng)專委會(huì)委員。于2001年獲得福州大學(xué)水利水電專業(yè)學(xué)士學(xué)位,2005年獲得廈門(mén)大學(xué)計(jì)算機(jī)專業(yè)碩士學(xué)位,2009年獲得北京大學(xué)計(jì)算機(jī)專業(yè)博士學(xué)位。中國(guó)高校首個(gè)“數(shù)字教師”提出者和建設(shè)者(http://www.cs.xmu.edu.cn/linziyu),2009年至今,“數(shù)字教師”大平臺(tái)累計(jì)向網(wǎng)絡(luò)免費(fèi)發(fā)布超過(guò)500萬(wàn)字高價(jià)值的教學(xué)和科研資料,累計(jì)網(wǎng)絡(luò)訪問(wèn)量超過(guò)500萬(wàn)次。 主要研究方向?yàn)閿?shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)挖掘和大數(shù)據(jù),發(fā)表期刊和會(huì)議學(xué)術(shù)論文多篇,并作為課題負(fù)責(zé)人主持了1項(xiàng)國(guó)家自然科學(xué)基金、1項(xiàng)福建省自然科學(xué)基金項(xiàng)目和1項(xiàng)福建省教改課題。曾作為志愿者翻譯了Google Spanner、BigTable和《Architecture of a Database System》等大量英文學(xué)術(shù)資料,與廣大網(wǎng)友分享,深受歡迎。2013年開(kāi)始在廈門(mén)大學(xué)開(kāi)設(shè)大數(shù)據(jù)課程,并因在教學(xué)領(lǐng)域的突出貢獻(xiàn)和學(xué)生的認(rèn)可,成為2013年度和2017年度廈門(mén)大學(xué)教學(xué)類獎(jiǎng)教金獲得者。獲得2017年福建省精品在線開(kāi)放課程、2018年廈門(mén)大學(xué)高等教育教學(xué)成果特等獎(jiǎng)、2018年福建省高等教育教學(xué)成果二等獎(jiǎng)。 主講課程:《大數(shù)據(jù)處理技術(shù)》。 個(gè)人主頁(yè):http://www.cs.xmu.edu.cn/linziyu。 E-mail: ziyulin@xmu.edu.cn。 數(shù)據(jù)庫(kù)實(shí)驗(yàn)室網(wǎng)站:http://dblab.xmu.edu.cn。 建設(shè)了高校大數(shù)據(jù)課程公共服務(wù)平臺(tái)(http://dblab.xmu.edu.cn/post/bigdata-teaching- platform/),成為全國(guó)高校大數(shù)據(jù)教學(xué)知名品牌。平臺(tái)為教師教學(xué)和學(xué)生學(xué)習(xí)大數(shù)據(jù)課程提供包括教學(xué)大綱、講義PPT、學(xué)習(xí)指南、備課指南、實(shí)驗(yàn)指南、上機(jī)習(xí)題、授課視頻、技術(shù)資料等全方位、一站式免費(fèi)服務(wù),平臺(tái)年訪問(wèn)量超過(guò)100萬(wàn)次,同時(shí)提供面向高校的大數(shù)據(jù)實(shí)驗(yàn)平臺(tái)建設(shè)方案和大數(shù)據(jù)課程師資培訓(xùn)服務(wù)。
第1章 案例概述 1
1.1 案例目的 1
1.2 適用對(duì)象 1
1.3 時(shí)間安排 2
1.4 預(yù)備知識(shí) 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ù)平臺(tái) 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ù)庫(kù)的安裝和基本
使用方法 29
2.6.1 安裝MySQL 29
2.6.2 MySQL常用操作 32
2.7 本章小結(jié) 34
第3章 IntelliJ IDEA開(kāi)發(fā)工具的安裝和使用方法 35
3.1 下載和安裝IDEA 35
3.2 下載Scala插件安裝包 35
3.3 啟動(dòng)IDEA 36
3.4 為IDEA安裝Scala插件 39
3.5 配置項(xiàng)目的JDK 42
3.6 使用IDEA開(kāi)發(fā)WordCount程序 44
3.6.1 創(chuàng)建一個(gè)新項(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ù)庫(kù)驅(qū)動(dòng)程序
JAR包 63
4.1.4 啟動(dòng)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讀寫(xiě)
MySQL數(shù)據(jù)庫(kù)的方法 71
5.1 Spark SQL概述 71
5.2 創(chuàng)建MySQL數(shù)據(jù)庫(kù) 72
5.3 在spark-shell交互式環(huán)境中
讀寫(xiě)MySQL數(shù)據(jù)庫(kù) 72
5.3.1 讀取MySQL數(shù)據(jù)庫(kù)中的數(shù)據(jù) 73
5.3.2 向MySQL數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù) 74
5.4 編寫(xiě)?yīng)毩?yīng)用程序讀寫(xiě)MySQL
數(shù)據(jù)庫(kù) 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é)同
過(guò)濾算法 87
6.1 推薦系統(tǒng)概述 87
6.1.1 什么是推薦系統(tǒng) 87
6.1.2 長(zhǎng)尾理論 88
6.1.3 推薦方法 88
6.1.4 推薦系統(tǒng)模型 89
6.1.5 推薦系統(tǒng)的應(yīng)用 89
6.2 協(xié)同過(guò)濾算法 90
6.2.1 基于用戶的協(xié)同過(guò)濾 90
6.2.2 基于物品的協(xié)同過(guò)濾 91
6.2.3 UserCF算法和ItemCF算法的
對(duì)比 92
6.2.4 基于模型的協(xié)同過(guò)濾 92
6.3 Spark MLlib中的協(xié)同過(guò)濾算法 92
6.3.1 ALS算法的基本原理 93
6.3.2 在spark-shell中運(yùn)行ALS算法 95
6.3.3 編寫(xiě)?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 接收請(qǐng)求與響應(yīng)請(qǐng)求 106
7.3 使用Express框架和Jade模板引擎 106
7.3.1 創(chuàng)建項(xiàng)目目錄 106
7.3.2 安裝Express開(kāi)發(fā)框架 107
7.3.3 安裝Jade模板引擎 107
7.3.4 創(chuàng)建服務(wù)器 107
7.3.5 創(chuàng)建模板文件 107
7.3.6 測(cè)試網(wǎng)頁(yè) 108
7.4 實(shí)例1:設(shè)計(jì)網(wǎng)頁(yè)實(shí)現(xiàn)用戶注冊(cè)登錄
功能 108
7.4.1 創(chuàng)建MySQL數(shù)據(jù)庫(kù) 108
7.4.2 創(chuàng)建項(xiàng)目目錄 109
7.4.3 安裝Express開(kāi)發(fā)框架 109
7.4.4 安裝MySQL驅(qū)動(dòng)模塊 109
7.4.5 創(chuàng)建服務(wù)器 109
7.4.6 創(chuàng)建網(wǎng)頁(yè) 111
7.4.7 測(cè)試網(wǎng)頁(yè) 112
7.5 實(shí)例2:采用Jade模板引擎實(shí)現(xiàn)
用戶注冊(cè)登錄功能 113
7.5.1 創(chuàng)建項(xiàng)目目錄 113
7.5.2 安裝Express開(kāi)發(fā)框架 113
7.5.3 安裝Jade模板引擎 114
7.5.4 安裝MySQL驅(qū)動(dòng)模塊 114
7.5.5 安裝body-parser模塊 114
7.5.6 創(chuàng)建服務(wù)器 114
7.5.7 創(chuàng)建網(wǎng)頁(yè)模板文件 116
7.5.8 測(cè)試網(wǎng)頁(yè) 116
7.6 實(shí)例3:通過(guò)網(wǎng)頁(yè)調(diào)用詞頻統(tǒng)計(jì)應(yīng)用
程序 118
7.6.1 創(chuàng)建項(xiàng)目目錄 119
7.6.2 安裝Express開(kāi)發(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)頁(yè)中調(diào)用程序并展現(xiàn)結(jié)果 123
7.7 本章小結(jié) 124
第8章 電影推薦系統(tǒng)(基礎(chǔ)版)的
實(shí)現(xiàn)過(guò)程 125
8.1 數(shù)據(jù)分析整體過(guò)程 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 編寫(xiě)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)頁(yè)中展現(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)頁(yè)中調(diào)用程序并展現(xiàn)結(jié)果 150
8.5 本章小結(jié) 151
第9章 電影推薦系統(tǒng)(升級(jí)版)的
設(shè)計(jì)與實(shí)現(xiàn) 152
9.1 系統(tǒng)概述 152
9.2 系統(tǒng)總體設(shè)計(jì) 153
9.3 數(shù)據(jù)庫(kù)的設(shè)計(jì)與實(shí)現(xiàn) 153
9.3.1 數(shù)據(jù)庫(kù)設(shè)計(jì) 153
9.3.2 數(shù)據(jù)庫(kù)實(shí)現(xiàn) 154
9.4 Spark程序的設(shè)計(jì)與實(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è)計(jì)與實(shí)現(xiàn) 166
9.5.1 系統(tǒng)網(wǎng)站的設(shè)計(jì) 166
9.5.2 系統(tǒng)網(wǎng)站的實(shí)現(xiàn) 168
9.6 本章小結(jié) 179
參考文獻(xiàn) 180