劍指大數據——Flink學習精要(Scala版)

尚硅谷教育

  • 出版商: 電子工業
  • 出版日期: 2022-10-01
  • 定價: $630
  • 售價: 8.5$536
  • 語言: 簡體中文
  • 頁數: 312
  • ISBN: 7121443422
  • ISBN-13: 9787121443428
  • 相關分類: JVM 語言大數據 Big-data
  • 立即出貨 (庫存 < 3)

買這商品的人也買了...

商品描述

本書基於流行穩定版Flink 1.13進行講解,從Flink數據處理思想開始講起,帶領讀者深入理解Flink的基本架構,進而由淺入深結合具體案例進行講解,詳細剖析了Flink中DataStream API的使用,並對Flink中的時間語義、狀態、容錯機制等重要概念進行了詳盡的闡釋。同時,本書還對實際開發過程中常用的Flink SQL、CEP等高層級API進行了細致講解,以電商網站中的實際應用為場景,提供了大量的代碼實現。本書分為12章:第1~5章,帶領讀者初步認識Flink並編寫基本的Flink程序;第6~10章,深入探討了Flink內部的高級應用。第11~12章,講解了Flink提供的擴展功能。本書適用於大數據的學習者與從業人員,以及院校大數據相關專業的學生,也是大數據學習的必備書籍。

目錄大綱

第1章 初識Flink 1
1.1 Flink的起源和設計理念 1
1.2 Flink的應用 3
1.2.1 Flink在企業中的應用 3
1.2.2 Flink主要的應用場景 3
1.3 流式數據處理的發展和演變 4
1.3.1 流處理和批處理 5
1.3.2 傳統事務處理 6
1.3.3 有狀態的流處理 6
1.3.4 Lambda架構 9
1.3.5 新一代流處理器 10
1.4 Flink的特性總結 10
1.4.1 Flink的核心特性 10
1.4.2 分層API 10
1.5 Flink與Spark 11
1.5.1 數據處理架構 12
1.5.2 數據模型和運行架構 13
1.5.3 Spark還是Flink 13
1.6 本章總結 14
第2章 Flink快速上手 15
2.1 環境準備 15
2.2 創建項目 15
2.3 編寫代碼 18
2.3.1 批處理 18
2.3.2 流處理 19
2.4 本章總結 22
第3章 Flink部署 23
3.1 快速啟動一個Flink集群 24
3.1.1 環境配置 24
3.1.2 本地啟動 24
3.1.3 集群啟動 25
3.1.4 向集群提交作業 27
3.2 部署模式 30
3.2.1 會話模式 30
3.2.2 單作業模式 31
3.2.3 應用模式 31
3.3 獨立模式 32
3.3.1 會話模式部署 32
3.3.2 單作業模式部署 32
3.3.3 應用模式部署 32
3.3.4 高可用 33
3.4 YARN模式 34
3.4.1 相關準備和配置 34
3.4.2 會話模式部署 35
3.4.3 單作業模式部署 36
3.4.4 應用模式部署 37
3.4.5 高可用 37
3.5 K8s模式 38
3.6 本章總結 38
第4章 Flink運行時架構 39
4.1 系統架構 39
4.1.1 整體構成 40
4.1.2 JobManager 40
4.1.3 TaskManager 41
4.2 作業提交流程 42
4.2.1 高層級抽象視角 42
4.2.2 獨立模式 42
4.2.3 YARN集群 43
4.3 一些重要概念 45
4.3.1 數據流圖 45
4.3.2 並行度 46
4.3.3 算子鏈 48
4.3.4 作業圖與執行圖 49
4.3.5 任務和任務槽 51
4.4 本章總結 56
第5章 DataStream API基礎篇 57
5.1 執行環境 57
5.1.1 創建執行環境 58
5.1.2 執行模式 58
5.1.3 觸發程序執行 60
5.2 數據源 60
5.2.1 準備工作 60
5.2.2 從集合中讀取數據 61
5.2.3 從文件讀取數據 61
5.2.4 從Socket讀取數據 62
5.2.5 從Kafka讀取數據 62
5.2.6 自定義數據源 64
5.2.7 Flink支持的數據類型 66
5.3 轉換操作 67
5.3.1 基本轉換算子 67
5.3.2 聚合算子 71
5.3.3 用戶自定義函數 75
5.3.4 物理分區 78
5.4 輸出 83
5.4.1 連接到外部系統 83
5.4.2 輸出到文件 85
5.4.3 輸出到Kafka 86
5.4.4 輸出到Redis 87
5.4.5 輸出到Elasticsearch 89
5.4.6 輸出到MySQL 91
5.4.7 自定義Sink輸出 93
5.5 本章總結 94
第6章 Flink中的時間和窗口 95
6.1 時間語義 95
6.1.1 Flink中的時間語義 95
6.1.2 哪種時間語義更重要 97
6.2 水位線 98
6.2.1 事件時間和窗口 98
6.2.2 什麽是水位線 100
6.2.3 如何生成水位線 104
6.2.4 水位線的傳遞 110
6.2.5 水位線的總結 111
6.3 窗口 112
6.3.1 窗口的概念 112
6.3.2 窗口的分類 114
6.3.3 窗口API概覽 117
6.3.4 窗口分配器 118
6.3.5 窗口函數 121
6.3.6 測試水位線和窗口的使用 129
6.3.7 其他API 131
6.3.8 窗口的生命周期 135
6.4 遲到數據的處理 136
6.4.1 設置水位線延遲時間 136
6.4.2 允許窗口處理遲到數據 137
6.4.3 將遲到數據放入窗口側輸出流 137
6.5 本章總結 140
第7章 處理函數 141
7.1 基本處理函數 141
7.1.1 處理函數的功能和使用 141
7.1.2 ProcessFunction解析 143
7.1.3 處理函數的分類 144
7.2 按鍵分區處理函數 145
7.2.1 定時器和定時服務 145
7.2.2 KeyedProcessFunction的使用 146
7.3 窗口處理函數 149
7.3.1 窗口處理函數的使用 149
7.3.2 ProcessWindowFunction解析 150
7.4 應用案例——Top N 151
7.4.1 使用ProcessAllWindowFunction 151
7.4.2 使用KeyedProcessFunction 153
7.5 側輸出流 157
7.6 本章總結 157
第8章 多流轉換 158
8.1 分流 158
8.1.1 簡單實現 158
8.1.2 使用側輸出流 159
8.2 基本合流操作 161
8.2.1 聯合 161
8.2.2 連接 164
8.3 基於時間的合流——聯結 169
8.3.1 窗口聯結 169
8.3.2 間隔聯結 172
8.3.3 窗口同組聯結 175
8.4 本章總結 176
第9章 狀態編程 177
9.1 Flink中的狀態 177
9.1.1 有狀態算子 177
9.1.2 狀態的管理 178
9.1.3 狀態的分類 178
9.2 按鍵分區狀態 180
9.2.1 基本概念和特點 180
9.2.2 支持的結構類型 180
9.2.3 代碼實現 182
9.2.4 狀態生存時間 189
9.3 算子狀態 190
9.3.1 基本概念和特點 190
9.3.2 狀態類型 190
9.3.3 代碼實現 191
9.4 廣播狀態 194
9.4.1 基本用法 194
9.4.2 代碼實例 196
9.5 狀態持久化和狀態後端 197
9.5.1 檢查點 197
9.5.2 狀態後端 198
9.6 本章總結 200
第10章 容錯機制 201
10.1 檢查點 201
10.1.1 檢查點的保存 202
10.1.2 從檢查點恢復狀態 204
10.1.3 檢查點算法 206
10.1.4 檢查點配置 210
10.1.5 保存點 212
10.2 狀態一致性 213
10.2.1 一致性的概念和級別 214
10.2.2 端到端的狀態一致性 214
10.3 端到端精確一次 215
10.3.1 輸入端保證 215
10.3.2 輸出端保證 215
10.3.3 Flink和Kafka連接時的精確一次保證 218
10.4 本章總結 221
第11章 Table API和SQL 222
11.1 快速上手 222
11.1.1 需要引入的依賴 223
11.1.2 一個簡單示例 223
11.2 基本API 224
11.2.1 程序架構 225
11.2.2 創建表環境 225
11.2.3 創建表 226
11.2.4 表的查詢 227
11.2.5 輸出表 229
11.2.6 表和流的轉換 230
11.3 流處理中的表 234
11.3.1 動態表和持續查詢 235
11.3.2 將流轉換成動態表 236
11.3.3 用SQL持續查詢 237
11.3.4 將動態表轉換為流 241
11.4 時間屬性和窗口 242
11.4.1 事件時間 242
11.4.2 處理時間 244
11.4.3 窗口 245
11.5 聚合查詢 247
11.5.1 分組聚合 247
11.5.2 窗口聚合 248
11.5.3 開窗聚合 250
11.5.4 應用實例——Top N 252
11.6 聯結查詢 255
11.6.1 常規聯結查詢 256
11.6.2 間隔聯結查詢 257
11.7 函數 257
11.7.1 系統函數 258
11.7.2 自定義函數 259
11.8 SQL客戶端 265
11.9 連接到外部系統 267
11.9.1 Kafka 267
11.9.2 文件系統 269
11.9.3 JDBC 270
11.9.4 Elasticsearch 271
11.9.5 HBase 271
11.9.6 Hive 272
11.10 本章總結 275
第12章 Flink CEP 277
12.1 基本概念 277
12.1.1 CEP是什麽 277
12.1.2 模式 278
12.1.3 應用場景 279
12.2 快速上手 279
12.2.1 需要引入的依賴 279
12.2.2 一個簡單實例 279
12.3 模式API 281
12.3.1 個體模式 281
12.3.2 組合模式 285
12.3.3 模式組 288
12.3.4 匹配後跳過策略 289
12.4 模式的檢測處理 290
12.4.1 將模式應用到流上 290
12.4.2 處理匹配事件 290
12.4.3 處理超時事件 293
12.4.4 處理遲到數據 296
12.5 CEP的狀態機實現 297
12.6 本章總結 299