本書從初學者角度詳細介紹了Spark應用程序體系架構的核心技術,全書共9章。第1章詳細介紹開發(fā)Spark框架的Scala編程語言;第2~4、7~8章主要講解Spark核心基礎、SparkRDD彈性分布式數據集、Spark SQL處理結構化數據、Spark Streaming實時計算框架、Spark MLlib機器學習庫,并包含了搭建Spark集群、Spark集群的操作方式、利用Spark解決大數據工作中遇到的基本問題。第5~6章主要講解大數據環(huán)境中常見的輔助系統(tǒng),HBase數據庫以及Kafka流處理平臺,包含輔助系統(tǒng)的搭建方式、使用方法以及相關底層實現(xiàn)的基本原理;第9章是一個綜合項目,利用Spark框架開發(fā)流式計算系統(tǒng)。掌握Spark相關技術,能夠很好地適應企業(yè)開發(fā)的技術需要,為離線、實時數據處理平臺的開發(fā)奠定基礎。 本書附有配套源代碼、教學PPT、題庫、教學視頻、教學補充案例、教學設計等資源。為了幫助初學者更好地學習本書中的內容,還提供了在線答疑,歡迎讀者關注。 本書可作為高等院校本、專科計算機相關專業(yè),大數據課程的專用教材,是一本適合廣大計算機編程愛好者的優(yōu)秀讀物。
《Spark大數據分析與實戰(zhàn)》由傳智播客教育科技公司編寫,實用性強,案例翔實,配套數字資源豐富。
針對具有Hadoop基礎的讀者,幫助讀者掌握Spark的基礎知識和應用。不僅介紹了Spark基礎使用方法,而且還深入淺出講解了Spark的編程模型、運行機制、存儲原理和運行架構等內容。
內容的編寫致力于原理與實踐并進,讓讀者不會因為枯燥的原理而厭煩,穿插真實企業(yè)級項目,讓讀者具有開發(fā)項目的基礎能力。
序言
江蘇傳智播客教育科技股份有限公司(簡稱傳智播客)是一家致力于培養(yǎng)高素質軟件開發(fā)人才的科技公司,黑馬程序員是傳智播客旗下高端IT教育品牌。
黑馬程序員的學員多為大學畢業(yè)后,想從事IT行業(yè),但各方面條件還不成熟的年輕人。黑馬程序員的學員篩選制度非常嚴格,包括了嚴格的技術測試、自學能力測試,還包括性格測試、壓力測試、品德測試等。百里挑一的殘酷篩選制度確保學員質量,并降低企業(yè)的用人風險。
自黑馬程序員成立以來,教學研發(fā)團隊一直致力于打造精品課程資源,不斷在產、學、研三個層面創(chuàng)新自己的執(zhí)教理念與教學方針,并集中黑馬程序員的優(yōu)勢力量,有針對性地出版了計算機系列教材80多種,制作教學視頻數十套,發(fā)表各類技術文章數百篇。
黑馬程序員不僅斥資研發(fā)IT系列教材,還為高校師生提供以下配套學習資源與服務。
為大學生提供的配套服務
1. 請登錄高校學習平臺http://yx.ityxb.com,免費獲取海量學習資源,幫助高校學生解決學習問題。
2. 針對高校學生在學習過程中存在的壓力等問題,我們還面向大學生量身打造了IT技術女神播妞學姐,可提供教材配套源碼和習題答案,以及更多IT學習資源,同學們快來關注播妞學姐的微信公眾號:boniu1024。
播妞學姐微信公眾號
為教師提供的配套服務
針對高校教學,黑馬程序員為IT系列教材精心設計了教案 授課資源 考試系統(tǒng) 題庫 教學輔助案例的系列教學資源,高校老師請登錄高校教輔平臺http://yx.ityxb.com或關注碼大牛老師微信/QQ:2011168841,獲取教材配套資源,也可以掃描下方二維碼,加入專為IT教師打造的師資服務平臺教學好助手,獲取最新教師教學輔助資源的相關動態(tài)。
Spark大數據分析與實戰(zhàn)
為什么要學習本書
Apache Spark是用于大規(guī)模數據處理的統(tǒng)一分析引擎,具有高效性、易用性、通用性、兼容性四大特性,并且在Spark生態(tài)體系中,包含了離線數據、流式數據、圖計算、機器學習、NoSQL查詢等多個方面的解決方案,深受廣大大數據工程師及算法工程師的喜愛。對于想從事大數據行業(yè)的開發(fā)人員來說,學好Spark尤為重要。
Spark技術功能強大,涉及知識面較廣,零基礎的同學很難踏入Spark體系架構之中,因此本書采用理論和案例相結合的編寫方式,用通俗易懂的語言講解復雜、難以理解的原理,每章都包含多個案例,讓讀者學以致用。
關于本書
作為大數據技術Spark的入門教程,最重要且最難的一件事情就是將一些復雜、難以理解的思想和問題簡單化,讓初學者能夠輕松理解并快速掌握。本教材對每個知識點都進行了深入分析,并針對每個知識點精心設計了相關案例,然后模擬這些知識點在實際工作中的運用,真正做到了知識的由淺入深、由易到難。
本書共分為9章,接下來分別對每個章節(jié)進行簡單的介紹,具體如下。
第1章主要講解什么是Scala以及Scala編程相關知識。通過本章學習,讀者應掌握Scala環(huán)境的安裝配置,熟悉Scala語法規(guī)范,并實現(xiàn)使用Scala語言編寫自己的第一個程序。
第2章主要介紹什么是Spark,以及搭建Spark集群的方式,并通過Spark Shell學習Spark的基本操作方法。通過本章學習,讀者應能獨立搭建Spark集群,同時對Spark系統(tǒng)的基礎操作和基本原理有初步了解。
第3章主要介紹什么是Spark RDD、RDD的處理過程以及操作RDD的方式。通過本章的學習,讀者可以了解RDD處理數據核心思想,并且能夠使用RDD編程解決實際問題。
第4章主要介紹Spark SQL的數據模型DataFrame和Dataset,它是一個由多個列組成的結構化的分布式數據集合,類似于關系數據庫中的表概念。通過本章的學習,讀者應能夠掌握利用Spark SQL操作MySQL和Hive兩種常見數據源。
第5章主要介紹HBase分布式數據庫的數據模型以及操作方式。通過本章學習,讀者能夠掌握部署HBase集群的方法,了解HBase存儲數據的架構原理,并且能夠使用HBase分布式數據庫解決實際業(yè)務問題。
第6章主要介紹Kafka流處理平臺,Kafka是流式計算系統(tǒng)中常見的輔助工具,通過Kafka工作原理的學習,讀者能夠了解Kafka集群整體架構中各個組件的功能,以及Kafka寫入數據和消費數據的底層原理及操作方式。通過本章學習,讀者能夠掌握部署Kafka集群的方法,并能夠通過執(zhí)行命令和API方式操作Kafka。
第7章主要介紹Spark Streaming的相關知識,Spark Streaming是Spark生態(tài)系統(tǒng)中實現(xiàn)流式計算功能的重要組件。通過本章Spark Streaming案例式講解,讀者能夠掌握Spark Streaming程序的開發(fā)步驟,及與Kafka整合使用的方法。
第8章主要介紹Spark MLlib,它是Spark提供的機器學習庫,其中整合了統(tǒng)計、分類、回歸、過濾等主流的機器學習算法和豐富的API,降低用戶使用機器學習的難度。通過本章學習,讀者能夠了解利用Spark完成機器學習的方式,即獲取數據集,調用訓練模型算法得出模型,通過模型分析當前數據。
第9章主要介紹利用Spark構建實時交易數據統(tǒng)計案例的開發(fā)流程。通過本章學習,讀者能夠了解實時計算項目的基本架構模型,以及本項目統(tǒng)計商品成交額的需求實現(xiàn)方式。
致謝
本書的編寫和整理工作由傳智播客教育科技股份有限公司完成,主要參與人員有呂春林、高美云、翟振方、文燕等,全體人員在這近一年的編寫過程中付出了許多辛勤的汗水。除此之外,還有傳智播客600多名學員參與到了教材的試讀工作中,他們站在初學者的角度對教材提出了許多寶貴的修改意見,在此一并表示衷心的感謝。
意見反饋
盡管我們付出了最大的努力,但書中難免會有欠妥之處,歡迎各界專家和讀者朋友提出寶貴意見,我們將不勝感激。您在閱讀本書時,如果發(fā)現(xiàn)任何問題或有不認同之處可以通過電子郵件與我們取得聯(lián)系。
請發(fā)送電子郵件至itcast_book@vip.sina.com。
黑馬程序員
2019年7月 前言Spark大數據分析與實戰(zhàn)
目錄
第1章Scala語言基礎1
1.1初識Scala1
1.1.1Scala概述1
1.1.2Scala的下載安裝2
1.1.3在IDEA開發(fā)工具中下載安裝
Scala插件4
1.1.4開發(fā)第一個Scala程序6
1.2Scala的基礎語法9
1.2.1聲明值和變量9
1.2.2數據類型9
1.2.3算術和操作符重載10
1.2.4控制結構語句10
1.2.5方法和函數13
1.3Scala的數據結構15
1.3.1數組15
1.3.2元組18
1.3.3集合19
1.4Scala面向對象的特性24
1.4.1類與對象24
1.4.2繼承25
1.4.3單例對象和伴生對象26
1.4.4特質28
1.5Scala的模式匹配與樣例類29
1.5.1模式匹配30
1.5.2樣例類31
1.6本章小結31
1.7課后習題32
第2章Spark基礎33
2.1初識Spark33目錄Spark大數據分析與實戰(zhàn)
2.1.1Spark概述33
2.1.2Spark的特點34
2.1.3Spark應用場景35
2.1.4Spark與Hadoop對比36
2.2搭建Spark開發(fā)環(huán)境37
2.2.1環(huán)境準備37
2.2.2Spark的部署方式37
2.2.3Spark集群安裝部署38
2.2.4Spark HA集群部署41
2.3Spark運行架構與原理45
2.3.1基本概念45
2.3.2Spark集群運行架構45
2.3.3Spark運行基本流程46
2.4體驗第一個Spark程序47
2.5啟動SparkShell49
2.5.1運行SparkShell命令49
2.5.2運行SparkShell讀取HDFS文件50
2.6IDEA開發(fā)WordCount程序52
2.6.1以本地模式執(zhí)行Spark程序52
2.6.2集群模式執(zhí)行Spark程序54
2.7本章小結58
2.8課后習題59
第3章Spark RDD彈性分布式數據集60
3.1RDD簡介60
3.2RDD的創(chuàng)建方式61
3.2.1從文件系統(tǒng)加載數據創(chuàng)建RDD61
3.2.2通過并行集合創(chuàng)建RDD62
3.3RDD的處理過程63
3.3.1轉換算子63
3.3.2行動算子67
3.3.3編寫WordCount詞頻統(tǒng)計案例70
3.4RDD的分區(qū)71
3.5RDD的依賴關系71
3.6RDD機制73
3.6.1持久化機制73
3.6.2容錯機制75
3.7Spark的任務調度76
3.7.1DAG的概念76
3.7.2RDD在Spark中的運行流程76
3.8本章小結78
3.9課后習題78
第4章Spark SQL結構化數據文件處理80
4.1Spark SQL的基礎知識80
4.1.1Spark SQL的簡介80
4.1.2Spark SQL架構81
4.2DataFrame的基礎知識82
4.2.1DataFrame簡介82
4.2.2DataFrame的創(chuàng)建83
4.2.3DataFrame的常用操作86
4.3Dataset的基礎知識89
4.3.1Dataset簡介89
4.3.2Dataset對象的創(chuàng)建89
4.4RDD轉換為DataFrame90
4.4.1反射機制推斷Schema90
4.4.2編程方式定義Schema92
4.5Spark SQL操作數據源94
4.5.1操作MySQL94
4.5.2操作Hive數據集96
4.6本章小結99
4.7課后習題99
第5章HBase分布式數據庫101
5.1HBase的基礎知識101
5.1.1HBase的簡介101
5.1.2HBase的數據模型102
5.2HBase的集群部署103
5.3HBase的基本操作107
5.3.1HBase的Shell操作107
5.3.2HBase的Java API操作112
5.4深入學習HBase原理120
5.4.1HBase架構121
5.4.2物理存儲122
5.4.3尋址機制123
5.4.4HBase讀寫數據流程124
5.5HBase和Hive的整合125
5.6本章小結130
5.7課后習題130
第6章Kafka分布式發(fā)布訂閱消息系統(tǒng)132
6.1Kafka的基礎知識132
6.1.1消息傳遞模式簡介132
6.1.2Kafka簡介133
6.2Kafka工作原理134
6.2.1Kafka核心組件介紹134
6.2.2Kafka工作流程分析136
6.3Kafka集群部署與測試138
6.3.1安裝Kafka138
6.3.2啟動Kafka服務140
6.4Kafka生產者和消費者實例141
6.4.1基于命令行方式使用Kafka141
6.4.2基于Java API方式使用Kafka143
6.5Kafka Streams148
6.5.1Kafka Streams概述149
6.5.2Kafka Streams開發(fā)單詞計數應用149
6.6本章小結153
6.7課后習題153
第7章Spark Streaming實時計算框架155
7.1實時計算的基礎知識155
7.1.1什么是實時計算155
7.1.2常用的實時計算框架155
7.2Spark Streaming的基礎知識156
7.2.1Spark Streaming簡介156
7.2.2Spark Streaming工作原理157
7.3Spark的DStream157
7.3.1DStream簡介157
7.3.2DStream編程模型158
7.3.3DStream轉換操作158
7.3.4DStream窗口操作164
7.3.5DStream輸出操作168
7.3.6DStream實例實現(xiàn)網站熱詞排序170
7.4Spark Streaming整合Kafka實戰(zhàn)173
7.4.1KafkaUtils.createDstream方式173
7.4.2KafkaUtils.createDirectStream方式177
7.5本章小結180
7.6課后習題180
第8章Spark MLlib 機器學習算法庫182
8.1初識機器學習182
8.1.1什么是機器學習182
8.1.2機器學習的應用183
8.2Spark機器學習庫MLlib的概述184
8.2.1MLlib的簡介184
8.2.2Spark機器學習工作流程185
8.3數據類型186
8.3.1本地向量186
8.3.2標注點186
8.3.3本地矩陣187
8.4Spark MLlib基本統(tǒng)計188
8.4.1摘要統(tǒng)計188
8.4.2相關統(tǒng)計189
8.4.3分層抽樣190
8.5分類191
8.5.1線性支持向量機191
8.5.2邏輯回歸192
8.6案例構建推薦系統(tǒng)193
8.6.1推薦模型分類194
8.6.2利用MLlib實現(xiàn)電影推薦194
8.7本章小結200
8.8課后習題200
第9章綜合案例Spark實時交易數據統(tǒng)計202
9.1系統(tǒng)概述202
9.1.1系統(tǒng)背景介紹202
9.1.2系統(tǒng)架構設計202
9.1.3系統(tǒng)預覽203
9.2Redis數據庫203
9.2.1Redis介紹204
9.2.2Redis部署與啟動204
9.2.3Redis操作及命令205
9.3模塊開發(fā)構建工程結構206
9.4模塊開發(fā)構建訂單系統(tǒng)211
9.4.1模擬訂單數據211
9.4.2向Kafka集群發(fā)送訂單數據212
9.5模塊開發(fā)分析訂單數據215
9.6模塊開發(fā)數據展示219
9.6.1搭建Web開發(fā)環(huán)境219
9.6.2實現(xiàn)數據展示功能221
9.6.3可視化平臺展示227
9.7本章小結228