Flink編程基礎(chǔ)(Scala版)
定 價:¥69.8
中 教 價:¥69.80 (10.00折)
庫 存 數(shù): 1
叢 書 名:面向新工科專業(yè)建設(shè)計(jì)算機(jī)系列教材
本書以Scala作為開發(fā)Flink應(yīng)用程序的編程語言,系統(tǒng)地介紹了Flink編程的基礎(chǔ)知識。全書共8章,內(nèi)容包括大數(shù)據(jù)技術(shù)概述、Scala語言基礎(chǔ)、Flink的設(shè)計(jì)與運(yùn)行原理、Flink環(huán)境搭建和使用方法、DataStream API、DataSet API、Table API&SQL、FlinkCEP。本書主要章節(jié)都安排了入門級的編程實(shí)踐操作,以便讀者更好地學(xué)習(xí)和掌握Flink編程方法。本書官網(wǎng)免費(fèi)提供了全套的在線教學(xué)資源,包括講義PPT、習(xí)題、源代碼、軟件、數(shù)據(jù)集、授課視頻、上機(jī)實(shí)驗(yàn)指南等。 本書可作為高等院校大數(shù)據(jù)、計(jì)算機(jī)、軟件工程等專業(yè)的進(jìn)階級大數(shù)據(jù)課程教材,用于指導(dǎo)Flink編程實(shí)踐,也可供相關(guān)技術(shù)人員參考。
市場需要一款能夠?qū)崿F(xiàn)毫秒級別響應(yīng)并且支持精確一次一致性的、高吞吐、高性能的流計(jì)算框架,而Flink是當(dāng)前能夠滿足上述要求的產(chǎn)品,它正在成為大數(shù)據(jù)領(lǐng)域流處理的標(biāo)配組件。本書是一本優(yōu)秀的Flink教材,詳細(xì)介紹了Flink的環(huán)境搭建和基礎(chǔ)編程方法。結(jié)構(gòu)清晰,語言流暢,并配有豐富的配套資源,供讀者學(xué)習(xí)和參考。
大數(shù)據(jù)技術(shù)正處于快速發(fā)展之中,不斷有新的技術(shù)涌現(xiàn),Hadoop和Spark等技術(shù)成為其中的佼佼者。在Spark流行之前,Hadoop儼然已成為大數(shù)據(jù)技術(shù)的事實(shí)標(biāo)準(zhǔn),在企業(yè)中得到了廣泛的應(yīng)用,但其本身還存在諸多缺陷,主要的缺陷是MapReduce計(jì)算模型延遲過高,無法勝任實(shí)時、快速計(jì)算的需求,因而只適用離線批處理的應(yīng)用場景。Spark在設(shè)計(jì)上充分吸收和借鑒了MapReduce的精髓并加以改進(jìn),同時,采用了先進(jìn)的DAG執(zhí)行引擎,以支持循環(huán)數(shù)據(jù)流與內(nèi)存計(jì)算,因此,在性能上比MapReduce有了大幅度的提升,迅速獲得了學(xué)界和業(yè)界的廣泛關(guān)注。作為大數(shù)據(jù)計(jì)算平臺的后起之秀,Spark在2014年打破了Hadoop保持的基準(zhǔn)排序紀(jì)錄,此后逐漸發(fā)展成為大數(shù)據(jù)領(lǐng)域熱門的大數(shù)據(jù)計(jì)算平臺之一。但是,Spark的短板在于無法滿足毫秒級別的企業(yè)實(shí)時數(shù)據(jù)分析需求。Spark的流計(jì)算組件Spark Streaming的核心思路是將流數(shù)據(jù)分解成一系列短小的批處理作業(yè),每個短小的批處理作業(yè)都可以使用Spark Core進(jìn)行快速處理。但是,Spark Streaming在實(shí)現(xiàn)高吞吐和容錯性的同時,卻犧牲了低延遲和實(shí)時處理能力,快只能滿足秒級的實(shí)時計(jì)算需求,無法滿足毫秒級的實(shí)時計(jì)算需求。由于Spark Streaming組件的延遲較高,快響應(yīng)時間都要在秒級,無法滿足一些需要更快響應(yīng)時間的企業(yè)應(yīng)用的需求,所以,Spark社區(qū)又推出了Structured Streaming。Structured Streaming是一種基于Spark SQL引擎構(gòu)建的、可擴(kuò)展且容錯的流處理引擎。Structured Streaming包括微批處理和持續(xù)處理兩種處理模型。采用微批處理時,快響應(yīng)時間需要100ms,無法支持毫秒級別響應(yīng)。采用持續(xù)處理模型時,可以支持毫秒級別響應(yīng),但是,只能做到至少一次一致性,無法做到精確一次一致性。因此,市場需要一款能夠?qū)崿F(xiàn)毫秒級別響應(yīng)并且支持精確一次一致性的、高吞吐、高性能的流計(jì)算框架,而Flink是當(dāng)前能夠滿足上述要求的產(chǎn)品,它正在成為大數(shù)據(jù)領(lǐng)域流處理的標(biāo)配組件。筆者帶領(lǐng)的廈門大學(xué)計(jì)算機(jī)科學(xué)系數(shù)據(jù)庫實(shí)驗(yàn)室團(tuán)隊(duì),是國內(nèi)高校較早從事大數(shù)據(jù)教學(xué)的團(tuán)隊(duì)之一。在寫本書之前,我們已經(jīng)做了大量前期的相關(guān)工作。從2013年至今,已經(jīng)出版了8本大數(shù)據(jù)教材,內(nèi)容涵蓋導(dǎo)論課、入門課、進(jìn)階課和實(shí)訓(xùn)課,包括《大數(shù)據(jù)導(dǎo)論(通識課版)》(用于開設(shè)全校公共選修課)、《大數(shù)據(jù)導(dǎo)論》(用于開設(shè)大數(shù)據(jù)專業(yè)導(dǎo)論課)、《大數(shù)據(jù)技術(shù)原理與應(yīng)用》(用于開設(shè)入門級大數(shù)據(jù)專業(yè)課)、《大數(shù)據(jù)基礎(chǔ)編程、實(shí)驗(yàn)和案例教程》(用于開設(shè)入門級大數(shù)據(jù)專業(yè)課)、《Spark編程基礎(chǔ)(Scala版)》(用于開設(shè)進(jìn)階級大數(shù)據(jù)專業(yè)課)、《Spark編程基礎(chǔ)(Python版)》(用于開設(shè)進(jìn)階級大數(shù)據(jù)專業(yè)課)、《大數(shù)據(jù)實(shí)訓(xùn)案例之電影推薦系統(tǒng)(Scala版)》(用于開設(shè)大數(shù)據(jù)實(shí)訓(xùn)課程)和《大數(shù)據(jù)實(shí)訓(xùn)案例之電信用戶行為分析(Scala版)》(用于開設(shè)大數(shù)據(jù)實(shí)訓(xùn)課程)。這些教材已經(jīng)在國內(nèi)高校得到了廣泛使用,其中,《大數(shù)據(jù)技術(shù)原理與應(yīng)用》教材的銷量已經(jīng)突破了15萬冊,得到了廣大一線教師的高度認(rèn)可和好評。學(xué)習(xí)Flink需要有一定的大數(shù)據(jù)基礎(chǔ)知識,因此,建議讀者在學(xué)習(xí)本書之前,先學(xué)習(xí)《大數(shù)據(jù)技術(shù)原理與應(yīng)用》。為了幫助讀者更好地學(xué)習(xí)本書,我們?yōu)榻滩呐涮捉ㄔO(shè)了高校大數(shù)據(jù)課程公共服務(wù)平臺,截至目前,平臺累計(jì)訪問量已經(jīng)突破1000萬,在全國高校形成了廣泛的影響力,并榮獲2018年廈門大學(xué)教學(xué)成果特等獎和2018年福建省教學(xué)成果二等獎。為了幫助高校教師更好地教授大數(shù)據(jù)課程,我們每年都舉辦大數(shù)據(jù)師資培訓(xùn)交流班,目前已經(jīng)累計(jì)為全國400多所高校培養(yǎng)了600余位大數(shù)據(jù)教師。上述所有工作,使筆者對于撰寫一本優(yōu)秀的Flink教材有了更深的認(rèn)識和更強(qiáng)的信心。本書共8章,詳細(xì)介紹了Flink的環(huán)境搭建和基礎(chǔ)編程方法。第1章介紹大數(shù)據(jù)技術(shù),幫助讀者形成對大數(shù)據(jù)技術(shù)的總體性認(rèn)識以及Flink在其中所扮演的角色;第2章介紹Scala語言基礎(chǔ)知識,為學(xué)習(xí)基于Scala語言的Flink編程奠定基礎(chǔ);第3章介紹Flink的設(shè)計(jì)與運(yùn)行原理;第4章介紹Flink環(huán)境搭建和使用方法,為開展Flink編程實(shí)踐鋪平道路;第5章介紹DataStream API,包括DataStream編程模型、窗口的劃分、時間概念、窗口計(jì)算、水位線、狀態(tài)編程;第6章介紹DataSet API,包括DataSet編程模型、數(shù)據(jù)源、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)輸出、迭代計(jì)算和廣播變量;第7章介紹Table API&SQL,包括編程模型、Flink Table API、Flink SQL和自定義函數(shù);第8章介紹FlinkCEP,包括Pattern API和模式的檢測等。本書面向高校大數(shù)據(jù)、計(jì)算機(jī)、軟件工程等專業(yè)的學(xué)生,可以作為專業(yè)必修課或選修課教材。本書由林子雨和陶繼平執(zhí)筆,其中,林子雨負(fù)責(zé)書稿規(guī)劃、統(tǒng)稿、校對和在線資源創(chuàng)作,并撰寫第1、3、4、5、6、7、8章的內(nèi)容,陶繼平負(fù)責(zé)撰寫第2章的內(nèi)容。在本書的撰寫過程中,廈門大學(xué)計(jì)算機(jī)科學(xué)系碩士研究生鄭宛玉、陳杰祥、陳紹緯、周偉敬、阮敏朝、劉官山和黃連福等做了大量輔助性工作,在此,向這些同學(xué)的辛勤工作表示衷心的感謝。同時,感謝夏小云老師在書稿校對過程中的辛勤付出。本書官方網(wǎng)站免費(fèi)提供了全部配套資源的在線瀏覽和下載,并接受錯誤反饋和發(fā)布勘誤信息。同時,F(xiàn)link作為大數(shù)據(jù)進(jìn)階課程,在學(xué)習(xí)過程中會涉及大量相關(guān)的大數(shù)據(jù)基礎(chǔ)知識以及各種大數(shù)據(jù)軟件的安裝和使用方法,因此,推薦讀者訪問廈門大學(xué)數(shù)據(jù)庫實(shí)驗(yàn)室建設(shè)的國內(nèi)高校首個大數(shù)據(jù)課程公共服務(wù)平臺,來獲得必要的輔助學(xué)習(xí)內(nèi)容。在本書的撰寫過程中,參考了大量網(wǎng)絡(luò)資料和相關(guān)書籍,對Flink技術(shù)進(jìn)行了系統(tǒng)梳理,有選擇性地把一些重要知識納入本書。由于筆者能力有限,本書難免存在不足之處,望廣大讀者不吝賜教。
林子雨廈門大學(xué)計(jì)算機(jī)科學(xué)系數(shù)據(jù)庫實(shí)驗(yàn)室2021年6月
林子雨(1978-),男,博士,國內(nèi)高校知名大數(shù)據(jù)教師,廈門大學(xué)計(jì)算機(jī)科學(xué)系副教授,中國計(jì)算機(jī)學(xué)會數(shù)據(jù)庫專委會委員,中國計(jì)算機(jī)學(xué)會信息系統(tǒng)專委會委員,中國高校首個數(shù)字教師提出者和建設(shè)者。2013年開始在廈門大學(xué)開設(shè)大數(shù)據(jù)課程,建設(shè)了國內(nèi)高校首個大數(shù)據(jù)課程公共服務(wù)平臺,平臺累計(jì)網(wǎng)絡(luò)訪問量超過1000萬次,成為全國高校大數(shù)據(jù)教學(xué)知名品牌,并榮獲2018年福建省教學(xué)成果二等獎,主持的課程《大數(shù)據(jù)技術(shù)原理與應(yīng)用》獲評2018年國家精品在線開放課程。
第1章大數(shù)據(jù)技術(shù)概述11.1大數(shù)據(jù)概念與關(guān)鍵技術(shù)11.1.1大數(shù)據(jù)概念11.1.2大數(shù)據(jù)關(guān)鍵技術(shù)21.2代表性大數(shù)據(jù)技術(shù)31.2.1Hadoop41.2.2Spark81.2.3Flink101.2.4Beam131.3編程語言的選擇141.4在線資源151.5本章小結(jié)161.6習(xí)題16實(shí)驗(yàn)1Linux系統(tǒng)的安裝和常用命令17第2章Scala語言基礎(chǔ)192.1Scala語言概述192.1.1計(jì)算機(jī)的緣起192.1.2編程范式202.1.3Scala簡介222.1.4Scala的安裝222.1.5HelloWorld232.2Scala的基礎(chǔ)編程知識252.2.1基本數(shù)據(jù)類型和變量252.2.2輸入輸出282.2.3控制結(jié)構(gòu)312.2.4數(shù)據(jù)結(jié)構(gòu)352.3面向?qū)ο缶幊袒A(chǔ)422.3.1類422.3.2對象482.3.3繼承532.3.4參數(shù)化類型572.3.5特質(zhì)592.3.6模式匹配642.3.7包672.4函數(shù)式編程基礎(chǔ)682.4.1函數(shù)的定義與使用692.4.2高階函數(shù)712.4.3閉包722.4.4偏應(yīng)用函數(shù)和Curry化722.4.5針對容器的操作742.4.6函數(shù)式編程實(shí)例802.5本章小結(jié)812.6習(xí)題82實(shí)驗(yàn)2Scala編程初級實(shí)踐83第3章Flink的設(shè)計(jì)與運(yùn)行原理883.1Flink簡介883.2選擇Flink的原因893.2.1傳統(tǒng)數(shù)據(jù)處理架構(gòu)893.2.2大數(shù)據(jù)Lambda架構(gòu)903.2.3流處理架構(gòu)903.2.4Flink是理想的流計(jì)算框架913.2.5Flink的優(yōu)勢923.3Flink典型應(yīng)用場景943.3.1事件驅(qū)動型應(yīng)用943.3.2數(shù)據(jù)分析應(yīng)用953.3.3數(shù)據(jù)流水線應(yīng)用973.4Flink的統(tǒng)一數(shù)據(jù)處理973.5Flink技術(shù)棧993.6Flink工作原理1003.7Flink編程模型1013.8Flink的應(yīng)用程序結(jié)構(gòu)1023.9Flink的數(shù)據(jù)一致性1033.9.1有狀態(tài)計(jì)算1033.9.2數(shù)據(jù)一致性1033.9.3異步屏障快照機(jī)制1043.10本章小結(jié)1053.11習(xí)題106第4章Flink環(huán)境搭建和使用方法1074.1安裝Flink1074.1.1基礎(chǔ)環(huán)境1074.1.2下載安裝文件1084.1.3配置相關(guān)文件1084.1.4運(yùn)行測試樣例1094.1.5Flink和Hadoop的交互1104.2在Scala Shell中運(yùn)行代碼1104.3開發(fā)Flink獨(dú)立應(yīng)用程序1114.3.1安裝編譯打包工具M(jìn)aven1114.3.2開發(fā)批處理程序1134.3.3開發(fā)流處理程序1174.3.4使用IntelliJ IDEA開發(fā)Flink應(yīng)用程序1194.4設(shè)置程序運(yùn)行并行度1264.5Flink集群環(huán)境搭建1274.5.1集群基礎(chǔ)配置1274.5.2在集群中安裝Java1294.5.3設(shè)置SSH無密碼登錄1304.5.4安裝和配置Flink1314.5.5啟動和關(guān)閉Flink集群1334.6本章小結(jié)1334.7習(xí)題134實(shí)驗(yàn)3Flink和Hadoop的安裝134第5章DataStream API1365.1DataStream編程模型1365.1.1數(shù)據(jù)源1375.1.2數(shù)據(jù)轉(zhuǎn)換1495.1.3數(shù)據(jù)輸出1605.2窗口的劃分1635.3時間概念1635.4窗口計(jì)算1655.4.1窗口計(jì)算程序的結(jié)構(gòu)1655.4.2窗口分配器1665.4.3窗口計(jì)算函數(shù)1705.4.4觸發(fā)器1775.4.5驅(qū)逐器1805.5水位線1835.5.1水位線原理1835.5.2水位線的設(shè)置方法1865.5.3水位線應(yīng)用實(shí)例1885.6延遲數(shù)據(jù)處理1975.7狀態(tài)編程2015.8本章小結(jié)2035.9習(xí)題203實(shí)驗(yàn)4DataStream API編程實(shí)踐204第6章DataSet API2076.1DataSet編程模型2076.2數(shù)據(jù)源2086.2.1文件類數(shù)據(jù)源2086.2.2集合類數(shù)據(jù)源2096.2.3通用類數(shù)據(jù)源2096.2.4第三方文件系統(tǒng)2136.3數(shù)據(jù)轉(zhuǎn)換2156.3.1數(shù)據(jù)處理類算子2166.3.2聚合操作類算子2176.3.3多表關(guān)聯(lián)類算子2206.3.4集合操作類算子2236.3.5分區(qū)操作類算子2236.4數(shù)據(jù)輸出2246.5迭代計(jì)算2266.5.1全量迭代2266.5.2增量迭代2296.6廣播變量2306.7本章小結(jié)2326.8習(xí)題232實(shí)驗(yàn)5DataSet API編程實(shí)踐233第7章Table API&SQL2367.1編程模型2367.1.1程序執(zhí)行原理2367.1.2程序結(jié)構(gòu)2377.1.3TableEnvironment2387.1.4注冊表2397.1.5查詢表2457.1.6輸出表2487.1.7DataStream/DataSet與Table的相互轉(zhuǎn)換2517.1.8時間概念2587.2Flink Table API2607.2.1Table API應(yīng)用實(shí)例2607.2.2掃描、投影和過濾2617.2.3列操作2637.2.4聚合操作2637.2.5連接操作2677.2.6集合操作2687.2.7排序操作2707.2.8插入操作2707.2.9基于行的操作2707.3Flink SQL2807.3.1應(yīng)用實(shí)例2807.3.2數(shù)據(jù)查詢與過濾操作2827.3.3聚合操作2827.3.4連接操作2837.3.5集合操作2837.4自定義函數(shù)2857.4.1標(biāo)量函數(shù)2857.4.2表值函數(shù)2877.4.3聚合函數(shù)2897.5本章小結(jié)2917.6習(xí)題292實(shí)驗(yàn)6Table API& SQL編程實(shí)踐292第8章FlinkCEP2968.1概述2968.2Pattern API2978.2.1個體模式2978.2.2復(fù)合模式2998.2.3模式組3018.2.4匹配后跳過策略3028.3模式的檢測3028.3.1匹配事件提取3038.3.2超時事件提取3038.4應(yīng)用實(shí)例3048.5本章小結(jié)3088.6習(xí)題308實(shí)驗(yàn)7FlinkCEP編程實(shí)踐308參考文獻(xiàn)311