Flink編程基礎(Scala版)
內容描述
本書以Scala作為開發Flink應用程序的編程語言,系統地介紹了Flink編程的基礎知識。全書共8章,內容包括大數據技術概述、Scala語言基礎、Flink的設計與運行原理、Flink環境搭建和使用方法、DataStream API、DataSet API、Table API&SQL、FlinkCEP。本書主要章節都安排了入門級的編程實踐操作,以便讀者更好地學習和掌握Flink編程方法。本書官網免費提供了全套的在線教學資源,包括講義PPT、習題、源代碼、軟件、數據集、授課視頻、上機實驗指南等。 本書可作為高等院校大數據、電腦、軟件工程等專業的進階級“大數據”課程教材,用於指導Flink編程實踐,也可供相關技術人員參考。
目錄大綱
目錄
第1章大數據技術概述1
1.1大數據概念與關鍵技術1
1.1.1大數據概念1
1.1.2大數據關鍵技術2
1.2代表性大數據技術3
1.2.1Hadoop4
1.2.2Spark8
1.2.3Flink10
1.2.4Beam13
1.3編程語言的選擇14
1.4在線資源15
1.5本章小結16
1.6習題16
實驗1Linux系統的安裝和常用命令17
第2章Scala語言基礎19
2.1Scala語言概述19
2.1.1電腦的緣起19
2.1.2編程範式20
2.1.3Scala簡介22
2.1.4Scala的安裝22
2.1.5HelloWorld23
2.2Scala的基礎編程知識25
2.2.1基本數據類型和變量25
2.2.2輸入輸出28
2.2.3控制結構31
2.2.4數據結構35
2.3面向對象編程基礎42
2.3.1類42
2.3.2對象48
2.3.3繼承53
2.3.4參數化類型57
2.3.5特質59
2.3.6模式匹配64
2.3.7包67
2.4函數式編程基礎68
2.4.1函數的定義與使用69
2.4.2高階函數71
2.4.3閉包72
2.4.4偏應用函數和Curry化72
2.4.5針對容器的操作74
2.4.6函數式編程實例80
2.5本章小結81
2.6習題82
實驗2Scala編程初級實踐83
第3章Flink的設計與運行原理88
3.1Flink簡介88
3.2選擇Flink的原因89
3.2.1傳統數據處理架構89
3.2.2大數據Lambda架構90
3.2.3流處理架構90
3.2.4Flink是理想的流計算框架91
3.2.5Flink的優勢92
3.3Flink典型應用場景94
3.3.1事件驅動型應用94
3.3.2數據分析應用95
3.3.3數據流水線應用97
3.4Flink的統一數據處理97
3.5Flink技術棧99
3.6Flink工作原理100
3.7Flink編程模型101
3.8Flink的應用程序結構102
3.9Flink的數據一致性103
3.9.1有狀態計算103
3.9.2數據一致性103
3.9.3異步屏障快照機制104
3.10本章小結105
3.11習題106
第4章Flink環境搭建和使用方法107
4.1安裝Flink107
4.1.1基礎環境107
4.1.2下載安裝文件108
4.1.3配置相關文件108
4.1.4運行測試樣例109
4.1.5Flink和Hadoop的交互110
4.2在Scala Shell中運行代碼110
4.3開發Flink獨立應用程序111
4.3.1安裝編譯打包工具Maven111
4.3.2開發批處理程序113
4.3.3開發流處理程序11
4.3.4使用IntelliJ IDEA開發Flink應用程序119
4.4設置程序運行並行度126
4.5Flink集群環境搭建127
4.5.1集群基礎配置127
4.5.2在集群中安裝Java129
4.5.3設置SSH無密碼登錄130
4.5.4安裝和配置Flink131
4.5.5啟動和關閉Flink集群133
4.6本章小結133
4.7習題134
實驗3Flink和Hadoop的安裝134
第5章DataStream API136
5.1DataStream編程模型136
5.1.1數據源137
5.1.2數據轉換149
5.1.3數據輸出160
5.2窗口的劃分163
5.3時間概念163
5.4窗口計算165
5.4.1窗口計算程序的結構165
5.4.2窗口分配器166
5.4.3窗口計算函數170
5.4.4觸發器177
5.4.5驅逐器180
5.5水位線183
5.5.1水位線原理183
5.5.2水位線的設置方法186
5.5.3水位線應用實例188
5.6延遲數據處理197
5.7狀態編程201
5.8本章小結203
5.9習題203
實驗4DataStream API編程實踐204
第6章DataSet API207
6.1DataSet編程模型207
6.2數據源208
6.2.1文件類數據源208
6.2.2集合類數據源209
6.2.3通用類數據源209
6.2.4第三方文件系統213
6.3數據轉換215
6.3.1數據處理類算子216
6.3.2聚合操作類算子217
6.3.3多表關聯類算子220
6.3.4集合操作類算子223
6.3.5分區操作類算子223
6.4數據輸出224
6.5迭代計算226
6.5.1全量迭代226
6.5.2增量迭代229
6.6廣播變量230
6.7本章小結232
6.8習題232
實驗5DataSet API編程實踐233
第7章Table API&SQL236
7.1編程模型236
7.1.1程序執行原理236
7.1.2程序結構237
7.1.3TableEnvironment238
7.1.4註冊表239
7.1.5查詢表245
7.1.6輸出表248
7.1.7DataStream/DataSet與Table的相互轉換251
7.1.8時間概念258
7.2Flink Table API260
7.2.1Table API應用實例260
7.2.2掃描、投影和過濾261
7.2.3列操作263
7.2.4聚合操作263
7.2.5連接操作267
7.2.6集合操作268
7.2.7排序操作270
7.2.8插入操作270
7.2.9基於行的操作270
7.3Flink SQL280
7.3.1應用實例280
7.3.2數據查詢與過濾操作282
7.3.3聚合操作282
7.3.4連接操作283
7.3.5集合操作283
7.4自定義函數285
7.4.1標量函數285
7.4.2表值函數287
7.4.3聚合函數289
7.5本章小結291
7.6習題292
實驗6Table API& SQL編程實踐292
第8章FlinkCEP296
8.1概述296
8.2Pattern API297
8.2.1個體模式297
8.2.2復合模式299
8.2.3模式組301
8.2.4匹配後跳過策略302
8.3模式的檢測302
8.3.1匹配事件提取303
8.3.2超時事件提取303
8.4應用實例304
8.5本章小結308
8.6習題308
實驗7FlinkCEP編程實踐308
參考文獻311
作者介紹
林子雨(1978-),男,博士,國內高校知名大數據教師,廈門大學計算機科學系副教授,中國計算機學會數據庫專委會委員,中國計算機學會信息系統專委會委員,中國高校首個“數字教師”提出者和建設者。
2013年開始在廈門大學開設大數據課程,建設了國內高校首個大數據課程公共服務平台,平台累計網絡訪問量超過1000萬次,成為全國高校大數據教學知名品牌,並榮獲“2018年福建省教學成果二等獎”,主持的課程《大數據技術原理與應用》獲評“2018年國家精品在線開放課程”。