本書以Spark 3.x和Scala 2.x為主線,全面介紹了Spark及其生態(tài)體系中常用大數據項目的安裝和使用。全書共10章,分別講解了Scala語言基礎、Spark基礎、Spark RDD、Spark SQL、HBase、Kafka、Spark Streaming、Structured Streaming和Spark MLlib,并在最后完整開發(fā)了一個在線教育學生學習情況分析系統(tǒng),幫助讀者鞏固前面所學的內容。
本書附有配套視頻、教學PPT、教學設計、測試題等資源,同時,為了幫助初學者更好地學習本書中的內容,還提供了在線答疑,歡迎讀者關注。
本書可以作為高等院校數據科學與大數據技術及相關專業(yè)的教材,并適合大數據開發(fā)初學者、大數據分析與挖掘的從業(yè)者閱讀。
加入綜合項目案例,幫助讀者了解Spark在實際應用場景中的使用。
詳細解釋代碼內容,以便讀者更容易理解。
知識點結構清晰,由淺入深地講解Spark的原理、架構和應用。
整合教材、資源和服務,提供一體化的學習平臺。
強調實戰(zhàn)導向,注重應用型人才培養(yǎng)。
黨的二十大指出實踐沒有止境,理論創(chuàng)新也沒有止境。隨著互聯網技術的快速發(fā)展,各種數字設備、傳感器、物聯網設備等在全球范圍內產生了海量數據。這些數據以幾何速度爆發(fā)性增長,給傳統(tǒng)的數據處理方式帶來了前所未有的挑戰(zhàn)。如何滿足大規(guī)模數據處理的需求,成了一個熱門的研究課題,基于這種需求,人們需要新的技術來處理海量數據。
Spark提供了快速、通用、可擴展的大數據處理分析引擎,有效解決了海量數據的分析、處理問題,因此基于Spark的各種大數據技術得到了廣泛應用和普及。自Spark項目問世以來,Spark生態(tài)系統(tǒng)不斷壯大,越來越多的大數據技術基于Spark進行開發(fā)和應用,在國內外各企業(yè)中得到了廣泛應用,對于要往大數據方向發(fā)展的讀者而言,學習Spark是一個不錯的選擇。
本書在《Spark大數據分析與實戰(zhàn)》基礎上進行了改版,優(yōu)化了原書內容,并進行了以下調整。
●新增了Spark流式計算引擎Structured Streaming的講解。
●調整了項目實現和背景,使項目的內容更加豐富。
●調整了部分需求的實現方式,增強了教學的實用性。
●調整了知識講解的結構,更符合循序漸進的學習規(guī)律。
●添加素質教育的內容,將素質教育的內容與專業(yè)知識有機結合。
本書基于Spark 3.x和Scala 2.x,循序漸進地介紹了Spark的相關知識以及Spark生態(tài)體系一些常用的組件和開源大數據項目。本書共10章,具體內容如下。
●第1章主要講解什么是Scala以及Scala編程相關知識。
●第2章主要介紹什么是Spark,以及部署Spark的方式,并通過Spark Shell和一個簡單的案例介紹Spark的使用。
●第3、4章主要講解如何使用Spark的兩個組件Spark RDD和Spark SQL進行數據處理,并利用這兩個組件處理和操作不同的數據源。
●第5、6章主要介紹Spark生態(tài)體系常用開源大數據項目的原理和使用,并利用HBase實現數據存儲和Kafka實現數據的生產和消費。
●第7~9章主要講解如何使用Spark的3個組件Spark Streaming、Structured Streaming和Spark MLlib,并利用這3個組件實現數據的實時處理和通過模型推薦數據。
●第10章通過一個完整的實戰(zhàn)項目,指導讀者靈活運用Spark及其生態(tài)系統(tǒng)進行簡單的項目開發(fā)。
在學習過程中,讀者如果遇到困難,建議不要糾結于某個地方,可以先往后學習。通常來講,通過逐漸深入的學習,前面不懂和產生疑惑的知識點也就能夠理解了。在學習編程和部署環(huán)境的過程中,一定要多動手實踐,如果在實踐的過程中遇到問題,建議多思考,厘清思路,認真分析問題發(fā)生的原因,并在問題解決后及時總結經驗。
前言Spark大數據分析與實戰(zhàn)(第2版)本書配套服務
為了提升您的學習或教學體驗,我們精心為本書配備了豐富的數字化資源和服務,包括在線答疑、教學大綱、教學設計、教學PPT、教學視頻、測試題、源代碼等。通過這些配套資源和服務,我們希望讓您的學習或教學變得更加高效。請掃描下方二維碼獲取本書配套資源和服務。
致謝
本書的編寫和整理工作由傳智教育完成,全體參編人員在編寫過程中付出了辛勤的勞動,除此之外還有許多試讀人員參與了本書的試讀工作并給出了寶貴的建議,在此一并表示衷心的感謝。
意見反饋
本書難免有不妥之處,歡迎讀者提出寶貴意見。在閱讀本書時,如果發(fā)現任何問題或有不認同之處,可以通過電子郵件與編者聯系。請發(fā)送電子郵件至itcast_book@vip.sina.com。
傳智教育黑馬程序員2025年1月于北京
第1章Scala語言基礎1
1.1Scala概述1
1.1.1初識Scala1
1.1.2Scala的安裝2
1.1.3在IntelliJ IDEA中安裝Scala插件6
1.1.4Scala初體驗8
1.2Scala的基礎語法12
1.2.1變量12
1.2.2常量12
1.2.3數據類型13
1.2.4運算符15
1.2.5控制結構語句16
1.2.6方法和函數26
1.3Scala數據結構29
1.3.1數組29
1.3.2元組35
1.3.3集合36
1.4Scala面向對象43
1.4.1類和對象43
1.4.2單例對象46
1.4.3繼承47
1.4.4特質49
1.5本章小結51
1.6課后習題51
第2章Spark基礎53
2.1初識Spark53
2.1.1Spark概述53
2.1.2Spark的特點54
2.1.3Spark應用場景55
2.1.4Spark與MapReduce的區(qū)別55
2.2Spark基本架構及運行流程56
2.2.1基本概念56
2.2.2Spark基本架構57
2.2.3Spark運行流程58
2.3Spark的部署模式59
2.4部署Spark59
2.4.1基于Local模式部署Spark59
2.4.2基于Standalone模式部署Spark61
2.4.3基于High Availability模式部署Spark66
2.4.4基于Spark on YARN模式部署Spark70
2.5Spark初體驗71
2.6Spark Shell73
2.6.1Spark Shell命令74
2.6.2讀取HDFS文件實現詞頻統(tǒng)計74
2.7案例開發(fā)Spark程序76
2.7.1環(huán)境準備76
2.7.2基于本地模式開發(fā)Spark程序80
2.7.3基于集群模式開發(fā)Spark程序81
2.8本章小結84
2.9課后習題84
目錄Spark大數據分析與實戰(zhàn)(第2版)第3章Spark RDD彈性分布式數據集86
3.1RDD簡介86
3.2RDD的創(chuàng)建87
3.2.1基于文件創(chuàng)建RDD87
3.2.2基于數據集合創(chuàng)建RDD89
3.3RDD的處理過程89
3.3.1轉換算子90
3.3.2行動算子97
3.4RDD的分區(qū)102
3.5RDD的依賴關系103
3.6RDD機制105
3.6.1持久化機制105
3.6.2容錯機制106
3.7Spark的任務調度107
3.7.1DAG的概念107
3.7.2RDD在Spark中的運行流程108
3.8本章小結109
3.9課后習題110
第4章Spark SQL結構化數據處理模塊111
4.1Spark SQL的基礎知識111
4.1.1Spark SQL的簡介111
4.1.2Spark SQL架構112
4.2DataFrame的基礎知識113
4.2.1DataFrame簡介113
4.2.2DataFrame的創(chuàng)建114
4.2.3DataFrame的常用操作117
4.2.4DataFrame的函數操作120
4.3RDD轉換為DataFrame130
4.3.1反射機制推斷Schema130
4.3.2編程方式定義Schema132
4.4Dataset的基礎知識133
4.4.1Dataset簡介133
4.4.2Dataset的創(chuàng)建134
4.5Spark SQL操作數據源135
4.5.1Spark SQL操作MySQL136
4.5.2Spark SQL操作Hive139
4.6本章小結141
4.7課后習題141
第5章HBase分布式數據庫143
5.1HBase的基礎知識143
5.1.1HBase的簡介143
5.1.2HBase的數據模型144
5.2深入學習HBase原理145
5.2.1HBase架構145
5.2.2物理存儲146
5.2.3HBase讀寫數據流程147
5.3搭建HBase高可用集群149
5.4HBase的基本操作154
5.4.1HBase的Shell操作154
5.4.2HBase的Java API操作160
5.5HBase集成Hive167
5.6本章小結172
5.7課后習題172
第6章Kafka分布式發(fā)布訂閱消息系統(tǒng)173
6.1消息隊列簡介173
6.2Kafka簡介176
6.3Kafka工作原理176
6.3.1Kafka的基本架構176
6.3.2Kafka工作流程179
6.4搭建Kafka集群180
6.5Kafka的基本操作182
6.5.1Kafka的Shell操作183
6.5.2Kafka的Scala API操作186
6.6Kafka Streams190
6.6.1Kafka Streams概述191
6.6.2Kafka Streams實現單詞計數功能191
6.7本章小結194
6.8課后習題195
第7章Spark Streaming實時計算框架197
7.1實時計算概述197
7.2Spark Streaming的概述198
7.2.1Spark Streaming簡介198
7.2.2Spark Streaming的工作原理200
7.3Spark Streaming的DStream200
7.4Spark Streaming的編程模型201
7.5Spark Streaming的API操作202
7.5.1輸入操作202
7.5.2轉換操作205
7.5.3輸出操作214
7.5.4窗口操作218
7.5.5案例電商網站實時熱門品類統(tǒng)計223
7.6Spark Streaming整合Kafka226
7.7本章小結229
7.8課后習題229
第8章Structured Streaming流計算引擎231
8.1Spark Streaming的不足231
8.2Structured Streaming概述232
8.2.1Structured Streaming簡介232
8.2.2Structured Streaming編程模型233
8.3Structured Streaming的API操作234
8.3.1輸入操作234
8.3.2轉換操作239
8.3.3輸出操作242
8.4時間和窗口操作247
8.4.1時間的分類247
8.4.2窗口操作248
8.5案例物聯網設備數據分析252
8.5.1準備數據252
8.5.2分析數據255
8.6本章小結259
8.7課后習題259
第9章Spark MLlib機器學習庫261
9.1初識機器學習261
9.1.1什么是機器學習261
9.1.2機器學習的應用262
9.2Spark MLlib概述263
9.2.1Spark MLlib簡介263
9.2.2Spark MLlib工作流程264
9.3數據類型265
9.4Spark MLlib基本統(tǒng)計269
9.4.1摘要統(tǒng)計270
9.4.2相關統(tǒng)計271
9.4.3分層抽樣272
9.5分類273
9.5.1線性支持向量機274
9.5.2邏輯回歸276
9.6案例構建電影推薦系統(tǒng)278
9.6.1案例分析278
9.6.2案例實現279
9.7本章小結282
9.8課后習題282
第10章綜合案例在線教育學生學習情況分析系統(tǒng)284
10.1系統(tǒng)概述284
10.1.1系統(tǒng)背景介紹284
10.1.2系統(tǒng)流程分析285
10.2Redis的安裝和啟動286
10.3模塊開發(fā)構建項目結構287
10.4模塊開發(fā)在線教育數據的生成288
10.5模塊開發(fā)實時分析學生答題情況288
10.6模塊開發(fā)實時推薦題目288
10.7模塊開發(fā)學生答題情況離線分析289
10.8模塊開發(fā)數據可視化289
10.9本章小結289