本書是關于大數(shù)據(jù)和Spark的實用手冊。它將助你學習如何用Spark來完成很多大數(shù)據(jù)分析任務,其中覆蓋了高效利用Spark所需要知道的重要主題:如何使用SparkShell進行交互式數(shù)據(jù)分析、如何編寫Spark應用、如何在Spark中對大規(guī)模數(shù)據(jù)進行交互分析、如何使用SparkStreaming處理高速數(shù)據(jù)流、如何使用Spark進行機器學習、如何使用Spark進行圖處理如何監(jiān)控Spark應用等。
Spark提供高級API,應用開發(fā)者之用專注計算機本身不用關注集群本身。
Spark計算速度快,支持交互式計算和復雜計算。
Spark是一個通用引擎,可以完成各種運算。
許桂秋,計算機學士,工商管理碩士。 2009年-2012年,中國石油天然氣股份有限公司,負責項目管理工作,企業(yè)內(nèi)部高級講師; 2012年-2015年,曙光信息產(chǎn)業(yè)股份有限公司,負責項目管理與企業(yè)內(nèi)部培訓工作,企業(yè)內(nèi)部高級講師; 2016年至今,曙光瑞翼教育合作中心,教學運營總監(jiān),負責各高校合作項目部的具體運營管理及指導工作。
第1章 Spark簡介與運行原理 1
1.1 Spark是什么 1
1.1.1 Spark的版本發(fā)展歷程 2
1.1.2 Spark與Hadoop的區(qū)別與聯(lián)系 2
1.1.3 Spark的應用場景 3
1.2 Spark的生態(tài)系統(tǒng) 3
1.3 Spark的架構與原理 4
1.3.1 Spark架構設計 4
1.3.2 Spark作業(yè)運行流程 5
1.3.3 Spark分布式計算流程 6
1.4 Spark 2.X新特性 6
1.4.1 精簡的API 6
1.4.2 Spark作為編譯器 7
1.4.3 智能化程度 7
1.5 小結 7
習題 8
第2章 Spark的環(huán)境搭建 9
2.1 環(huán)境搭建前的準備 9
2.2 Spark相關配置 13
2.2.1 安裝SSH 13
2.2.2 SSH免密碼登錄 14
2.2.3 修改訪問權限 15
2.2.4 修改profile文件 15
2.2.5 修改Spark配置文件 16
2.3 Spark集群啟動與關閉 17
2.4 Spark應用提交到集群 18
2.5 Spark Web監(jiān)控頁面 19
2.6 小結 20
習題 20
第3章 使用Python開發(fā)Spark應用 21
3.1 Python編程語言 21
3.1.1 Python語言介紹 21
3.1.2 PySpark是什么 22
3.2 PySpark的啟動與日志設置 22
3.2.1 PySpark的啟動方式 22
3.2.2 日志輸出內(nèi)容控制 24
3.3 PySpark開發(fā)包的安裝 24
3.3.1 使用pip命令安裝 24
3.3.2 使用離線包安裝 25
3.4 使用PyCharm編寫Spark應用 25
3.4.1 PyCharm的安裝與基本配置 25
3.4.2 編寫Spark應用 27
3.5 小結 29
習題 30
第4章 Spark RDD 31
4.1 彈性分布式數(shù)據(jù)集 31
4.1.1 RDD的定義 31
4.1.2 RDD的特點 32
4.1.3 RDD的創(chuàng)建 33
4.1.4 RDD的操作 34
4.2 transform算子 34
4.2.1 map轉換 34
4.2.2 flatMap轉換 35
4.2.3 filter轉換 35
4.2.4 union轉換 35
4.2.5 intersection轉換 36
4.2.6 distinct轉換 36
4.2.7 sortBy轉換 36
4.2.8 mapPartitions轉換 36
4.2.9 mapPartitionsWithIndex轉換 37
4.2.10 partitionBy轉換 37
4.3 action算子 37
4.3.1 reduce(f)動作 37
4.3.2 collect( )動作 38
4.3.3 count( )動作 38
4.3.4 take(num)動作 39
4.3.5 first( )動作 39
4.3.6 top(num)動作 39
4.3.7 saveAsTextFile( )動作 39
4.3.8 foreach(f)動作 40
4.3.9 foreachPartition(f)動作 40
4.4 RDD Key-Value轉換算子 41
4.4.1 mapValues(f)操作 41
4.4.2 flatMapValues(f)操作 41
4.4.3 combineByKey操作 41
4.4.4 reduceByKey操作 42
4.4.5 groupByKey操作 42
4.4.6 sortByKey操作 43
4.4.7 keys( )操作 43
4.4.8 values( )操作 43
4.4.9 join操作 43
4.4.10 leftOuterJoin操作 43
4.4.11 rightOuterJoin操作 44
4.5 RDD Key-Value動作運算 44
4.5.1 collectAsMap( )操作 44
4.5.2 countByKey( )操作 44
4.6 共享變量 45
4.6.1 累加器 45
4.6.2 廣播變量 45
4.7 依賴關系 47
4.7.1 血統(tǒng) 47
4.7.2 寬依賴與窄依賴 47
4.7.3 shuffle 48
4.7.4 DAG的生成 49
4.8 Spark RDD的持久化 50
4.8.1 持久化使用方法 50
4.8.2 持久化存儲等級 51
4.8.3 檢查點 52
4.9 小結 52
習題 52
第5章 DataFrame與Spark SQL 54
5.1 DataFrame 54
5.1.1 DataFrame介紹 54
5.1.2 DataFrame創(chuàng)建 55
5.2 Spark SQL 56
5.2.1 Spark SQL介紹 56
5.2.2 Spark SQL的執(zhí)行原理 57
5.2.3 Spark SQL的創(chuàng)建 58
5.3 Spark SQL、DataFrame的常用操作 61
5.3.1 字段計算 61
5.3.2 條件查詢 62
5.3.3 數(shù)據(jù)排序 63
5.3.4 數(shù)據(jù)去重 63
5.3.5 數(shù)據(jù)分組統(tǒng)計 64
5.3.6 數(shù)據(jù)連接 65
5.3.7 數(shù)據(jù)繪圖 67
5.4 小結 68
習題 69
第6章 Spark Streaming 70
6.1 Spark Streaming介紹 70
6.1.1 什么是Spark Streaming 70
6.1.2 Spark Streaming工作原理 70
6.2 流數(shù)據(jù)加載 71
6.2.1 初始化StreamingContext 71
6.2.2 Discretized Stream離散化流 71
6.2.3 Spark Streaming數(shù)據(jù)源 72
6.3 DStream輸出操作 73
6.4 DStream轉換操作 75
6.4.1 map轉換 75
6.4.2 flatMap轉換 76
6.4.3 filter轉換 76
6.4.4 reduceByKey轉換 77
6.4.5 count轉換 77
6.4.6 updateStateByKey轉換 77
6.4.7 其他轉換 78
6.5 DataFrame與SQL操作 78
6.6 實時WordCount實驗 79
6.7 小結 81
習題 81
第7章 Spark機器學習庫 82
7.1 Spark機器學習庫 82
7.1.1 機器學習簡介 82
7.1.2 Spark機器學習庫的構成 82
7.2 準備數(shù)據(jù) 83
7.2.1 獲取數(shù)據(jù) 83
7.2.2 數(shù)據(jù)預處理 84
7.2.3 數(shù)據(jù)探索 84
7.3 使用MLlib機器學習庫 85
7.3.1 搭建環(huán)境 85
7.3.2 加載數(shù)據(jù) 86
7.3.3 探索數(shù)據(jù) 89
7.3.4 預測嬰兒生存機會 92
7.4 使用ML機器學習庫 93
7.4.1 轉換器、評估器和管道 94
7.4.2 預測嬰兒生存率 95
7.5 小結 97
習題 97
第8章 GraphFrames圖計算 98
8.1 圖 98
8.1.1 度 99
8.1.2 路徑和環(huán) 99
8.1.3 二分圖 100
8.1.4 多重圖和偽圖 100
8.2 GraphFrames介紹 101
8.2.1 應用背景 101
8.2.2 GraphFrames庫 102
8.2.3 使用GraphFrames庫 102
8.3 GraphFrame編程模型 102
8.3.1 GraphFrame實例 103
8.3.2 視圖和圖操作 104
8.3.3 模式發(fā)現(xiàn) 105
8.3.4 圖加載和保存 105
8.4 GraphFrames實現(xiàn)的算法 106
8.4.1 廣度優(yōu)先搜索 106
8.4.2 最短路徑 106
8.4.3 三角形計數(shù) 107
8.4.4 連通分量 107
8.4.5 標簽傳播算法 108
8.4.6 PageRank算法 109
8.5 基于GraphFrames的網(wǎng)頁排名 110
8.5.1 準備數(shù)據(jù)集 110
8.5.2 創(chuàng)建GraphFrames 111
8.5.3 使用PageRank進行網(wǎng)頁排名 111
8.6 小結 111
習題 111
第9章 出租車數(shù)據(jù)分析 112
9.1 數(shù)據(jù)處理 112
9.2 數(shù)據(jù)分析 113
9.2.1 創(chuàng)建DataFrame 113
9.2.2 KMeans聚類分析 114
9.3 百度地圖可視化 115
9.3.1 申請地圖key 115
9.3.2 聚類結果可視化 116
9.4 小結 117
第10章 圖書推薦系統(tǒng) 118
10.1 Django簡介 118
10.1.1 Django是什么 118
10.1.2 ORM模型 119
10.1.3 Django模板 119
10.1.4 View視圖 120
10.2 Django項目搭建 121
10.2.1 創(chuàng)建項目 121
10.2.2 創(chuàng)建應用 122
10.2.3 創(chuàng)建模型 122
10.3 推薦引擎設計 124
10.3.1 導入數(shù)據(jù) 124
10.3.2 訓練模型 126
10.3.3 圖書推薦 127
10.4 系統(tǒng)設計與實現(xiàn) 128
10.4.1 Bootstrap介紹與使用 128
10.4.2 Redis數(shù)據(jù)庫安裝與使用 129
10.4.3 視圖與路由設計 130
10.5 小結 132