《Flink原理深入與編程實戰——Scala+Java(微課視頻版)》是2023年清華大學出版社出版的圖書,作者是辛立偉。
基本介紹
- 中文名:Flink原理深入與編程實戰——Scala+Java(微課視頻版)
- 作者:辛立偉
- 出版時間:2023年2月1日
- 出版社:清華大學出版社
- ISBN:9787302626947
- 定價:159 元
內容簡介,圖書目錄,作者簡介,
內容簡介
本書講述Apache Flink大數據框架的原理,以及如果將Apache Flink套用於大數據的實時流處理、批處理、批流一體分析等各個場景。通過原理深入學習和實踐示例、案例的學習套用,使讀者了解並掌握Apache Flink流處理的框架的基本原理和技能,接近理論與實踐的距離。
全書共分為8章,主要內容包括Flink架構與集群安裝、Flink開發環境準備(基於IntelliJ IDEA和Maven)、開發Flink實時數據處理程式、Flink流數據分析、時間和水印概念、視窗操作、狀態和容錯、側輸出流、Flink流連線器、Flink流處理案例、開發Flink批數據處理程式、使用Table API進行數據處理、Flink on YARN、基於Flink構建批流一體數倉、基於Flink和Iceberg數據湖構建實時數倉。本書源碼全部在Apache Flink 1.13.2上調試成功,所有示例和案例均提供Scala語言和Java語言兩套API的實現(第8章除外),供讀者參考。
本書系統講解了Apache Flink大數據框架的原理和流、批處理的開發實踐,內容全面、實例豐富、可操作性強,做到了理論與實踐相結合。本書適合大數據學習愛好者、想要入門Apache Flink的讀者作為入門和提高的技術參考書,也適合用作大中專院校大數據專業相關的學生和老師的教材或教學參考書。
圖書目錄
第1章Flink架構與集群安裝(81min)
1.1Flink簡介
1.1.1Flink發展歷程
1.1.2Flink特性
1.2Flink套用場景
1.2.1事件驅動應用程式
1.2.2數據分析應用程式
1.2.3數據管道應用程式
1.3Flink體系架構
1.3.1Flink系統架構
1.3.2Flink運行時架構
1.3.3Flink資源管理
1.3.4Flink作業調度
1.3.5Flink故障恢復
1.3.6Flink程式執行模式
1.4Flink集群安裝
1.4.1Flink獨立集群安裝和測試
1.4.2Flink完全分散式集群安裝
1.4.3Flink常用命令
第2章Flink開發環境準備(37min)
2.1安裝和配置
2.1.1安裝和配置Maven
2.1.2修改Maven本地倉庫默認位置
2.1.3創建初始模板項目
2.1.4構建打包項目
2.2使用IntelliJ IDEA+Maven開發Flink項目
2.2.1在IntelliJ IDEA中創建Flink項目
2.2.2設定項目基本依賴
2.2.3用於構建具有依賴項的JAR的模板
2.2.4編寫批處理代碼並測試執行
2.2.5項目打包並提交Flink集群執行
2.3Flink相關概念
2.3.1Flink數據流
2.3.2Flink分層API
第3章開發Flink實時數據處理程式(376min)
3.1Flink流處理程式編程模型
3.1.1流數據類型
3.1.2流應用程式實現
3.1.3流應用程式剖析
3.2Flink支持的數據源
3.2.1基於Socket的數據源
3.2.2基於檔案的數據源
3.2.3基於集合的數據源
3.2.4自定義數據源
3.3Flink數據轉換
3.3.1map轉換
3.3.2flatMap轉換
3.3.3filter轉換
3.3.4keyBy轉換
3.3.5reduce轉換
3.3.6聚合轉換
3.3.7union轉換
3.3.8connect轉換
3.3.9coMap及coFlatMap轉換
3.3.10iterate轉換
3.3.11project轉換
3.4Flink流數據分區
3.4.1流數據分發模式
3.4.2數據分區方法
3.4.3數據分區示例
3.4.4理解操作符鏈
3.5Flink數據接收器
3.5.1內置數據接收器
3.5.2使用流檔案連線器
3.5.3自定義數據接收器
3.6時間和水印概念
3.6.1時間概念
3.6.2事件時間和水印
3.6.3水印策略
3.6.4處理空閒數據源
3.6.5編寫水印生成器
3.6.6內置水印生成器
3.6.7分配時間戳和水印示例
3.7視窗操作
3.7.1理解Flink視窗概念
3.7.2視窗分配器
3.7.3視窗函式
3.7.4觸發器
3.7.5清除器
3.7.6處理遲到數據
3.7.7處理視窗結果
3.7.8視窗連線
3.8低級操作
3.8.1ProcessFunction
3.8.2KeyedProcessFunction示例
3.8.3案例: 伺服器故障檢測報警程式
3.9狀態和容錯
3.9.1狀態運算
3.9.2狀態的類型
3.9.3使用託管的Keyed State
3.9.4使用託管Operator State
3.9.5廣播狀態
3.9.6狀態後端
3.9.7檢查點機制
3.9.8狀態快照
3.10側輸出流
3.10.1什麼是側輸出流
3.10.2側輸出流套用示例
3.11Flink流連線器
3.11.1Kafka連線器
3.11.2JDBC連線器
3.12其他
3.12.1在應用程式中使用日誌
3.12.2使用ParameterTool
3.12.3命名大型TupleX類型
3.13Flink流處理案例
3.13.1處理IoT事件流
3.13.2運輸公司車輛超速實時監測
第4章開發Flink批數據處理程式(64min)
4.1Flink批處理程式編程模型
4.1.1批應用程式實現
4.1.2批應用程式剖析
4.2數據源
4.2.1基於檔案的數據源
4.2.2基於集合的數據源
4.2.3通用的數據源
4.2.4壓縮檔案
4.3數據轉換
4.3.1map轉換
4.3.2flatMap轉換
4.3.3mapPartition轉換
4.3.4filter轉換
4.3.5reduce轉換
4.3.6在分組數據集上的reduce轉換
4.3.7在分組數據集上的GroupReduce轉換
4.3.8在分組數據集上的GroupCombine轉換
4.3.9在分組元組數據集上執行聚合
4.3.10在分組元組數據集上執行minBy轉換
4.3.11在分組元組數據集上執行maxBy轉換
4.3.12在全部元組數據集上執行聚合操作
4.3.13distinct轉換
4.3.14join連線轉換
4.3.15union轉換
4.3.16project轉換
4.3.17firstn轉換
4.4數據接收器
4.4.1將計算結果保存到文本檔案
4.4.2將計算結果保存到JDBC
4.4.3標準DataSink方法
4.4.4本地排序輸出
4.5廣播變數
4.6分散式快取
4.7參數傳遞
4.7.1通過構造函式傳參
4.7.2通過withParameters(Configuration)傳參
4.7.3通過ExecutionConfig傳遞全局參數
4.8數據集中的拉鏈操作
4.8.1密集索引
4.8.2唯一索引
4.9Flink批處理示例
4.9.1分析豆瓣熱門電影數據集——Scala實現
4.9.2分析豆瓣熱門電影數據集——Java實現
第5章使用Table API進行數據處理(136min)
5.1依賴
5.2Table API與SQL編程模式
5.2.1TableEnvironment
5.2.2Table API與SQL程式的結構
5.2.3在Catalog中創建表
5.2.4查詢表
5.2.5向下游傳送表
5.2.6翻譯並執行查詢
5.3Table API
5.3.1關係運算
5.3.2視窗運算
5.3.3基於行的操作
5.4Table API與DataStream API集成
5.4.1依賴
5.4.2在DataStream和Table之間轉換
5.4.3處理insertonly流
5.4.4處理變更日誌流
5.5Table API實時流處理案例
5.5.1感測器溫度實時統計
5.5.2車輛超速實時監測
5.5.3電商用戶行為實時分析
第6章Flink on YARN(13min)
6.1Flink on YARN session
6.1.1下載Flink集成Hadoop依賴包
6.1.2運行Flink on YARN session
6.1.3提交Flink作業
6.1.4停止Flink on YARN session
6.2Flink on YARN支持的部署模式
6.2.1Application模式
6.2.2PerJob集群模式
6.2.3session模式
第7章基於Flink構建流批一體數倉(27min)
7.1Flink集成Hive數倉
7.1.1Flink集成Hive的方式
7.1.2Flink集成Hive的步驟
7.1.3Flink連線Hive模板代碼
7.2批流一體數倉構建實例
7.2.1數據集說明
7.2.2創建Flink項目
7.2.3創建執行環境
7.2.4註冊HiveCatalog
7.2.5創建Kafka流表
7.2.6創建Hive表
7.2.7流寫Hive表
7.2.8動態讀取Hive流表
7.2.9完整示例代碼
7.2.10執行步驟
7.3純SQL構建批流一體數倉
7.3.1使用Flink SQL客戶端
7.3.2集成Flink SQL CLI和Hive
7.3.3註冊HiveCatalog
7.3.4使用SQL Client提交作業
7.3.5構建批流一體數倉完整過程
第8章基於Flink和Iceberg數據湖構建實時數倉(23min)
8.1現代數據湖概述
8.1.1什麼是數據湖
8.1.2數據湖架構
8.1.3開源數據湖框架
8.2基於Flink+Iceberg構建企業數據湖
8.2.1Apache Iceberg的優勢
8.2.2Apache Iceberg經典業務場景
8.2.3套用Apache Iceberg的準備工作
8.2.4創建和使用Catalog
8.2.5Iceberg DDL命令
8.2.6Iceberg SQL查詢
8.2.7Iceberg SQL寫入
8.2.8使用DataStream讀取
8.2.9使用DataStream寫入
8.2.10重寫檔案操作
8.2.11未來改進
8.3基於Flink+Iceberg構建準實時數倉
8.3.1實時數倉構建
8.3.2執行OLAP在線上分析
作者簡介
辛立偉,一個在IT領域摸爬滾打20多年的老程式設計師、技術培訓師、技術作者。橫跨Java、資料庫、大數據開發與分析、人工智慧等多個領域,參與多個IT項目的架構設計與開發。長期堅持撰寫技術部落格,曾在多個大學講授Java開發、資料庫和大數據技術課程,曾擔任中國石油大學(青島校區)等多所院校的外聘講師。