这门课解决的问题是:你已经在用 Spark 或自己写批处理代码跑数据了,但遇到实时流处理场景——比如电商下单后实时统计销量、传感器数据持续流入后实时告警——那些"跑起来"的代码,你到底该怎么写?Flink 是目前主流流处理引擎,和 Spark Streaming 并列,但它的 API、窗口模型、状态机制、Checkpoint 机制都不同,很多人一上来就被"滑动窗口单词计数"这种经典案例卡住。这门课从 Flink 基本原理出发,对比它和 Storm、Spark Streaming 的差异,然后带你用 Java 和 Scala 两种语言分别实现滑动窗口单词计数和批处理单词计数,让你真正理解 Flink 的编程模型。
适合什么基础
需要具备 Java 或 Scala 至少一门语言的基础,最好用过 Spark,对分布式计算框架有基本认知。如果你连 Java 基本语法都不熟,建议先补一下,Flink 的代码量不大,但语法细节多,一上来写不通会直接影响学习信心。需要具备一定的数据结构基础,尤其是 Map、List、Stream 等常用集合操作,这是理解 Flink 算子嵌套调用的前提。
建议先看哪几块
第一块:Flink 基本原理及应用场景分析,搞清楚 Flink 是什么、处理模型和 Spark Streaming 的核心差异在哪里,这是后面所有代码的上下文,跳过这步后面会处处觉得"反直觉"。第二块:Flink vs Storm vs SparkStream 的对比,重点看"为什么选 Flink"这一节,帮你判断自己是否合适,也帮你理解 Flink 的 Checkpoint 机制是怎么保证 Exactly-Once 语义的。第三块:滑动窗口单词计数,这是整个课程的核心案例,Java 和 Scala 代码都要跟完,重点理解窗口的划分方式、KeyBy 算子的作用、聚合操作符的写法、Sink 端怎么输出结果。
学完能独立做什么
看完这门课,你至少能独立完成一个完整的 Flink 流处理任务:从数据源接入、窗口划分、计算逻辑、输出到 Sink,全流程跑通。虽然只是单词计数这种经典案例,但它覆盖了 Flink 编程的基本模式——数据源、转换算子、窗口、输出——后续遇到带状态算子、时间事件边界、Watermark 处理等复杂场景,都能直接套用思路,不需要从零推导。批处理单词计数相对简单,但能帮你区分 Flink 的 Stream 和 Batch 两个 API 模式,建议最后做,巩固一下。
资料怎么配合练习
代码部分建议边听边敲,每听完一个案例,自己把代码复制到 IDE 里跑一遍,跑不通的地方对着课程视频重看对应节。建议先练滑动窗口单词计数的 Java 版本,再练 Scala 版本,两个对比着学,能快速理解"同一逻辑不同语言实现"的差异。批处理单词计数相对简单,但能帮你区分 Flink 的 Stream 和 Batch 两个 API 模式,建议最后做,巩固一下。每个案例结束后,试着自己改一行代码——比如把滚动窗口换成滑动窗口——看看输出结果怎么变,这种小改动能帮你真正理解窗口机制,而不是停留在"复制粘贴了事"。
课程目录
1-1 [Flink简介] Flink基本原理及应用场景分析 (29:13) 1-2 [Flink简介] Flink vs Storm vs SparkStream (12:35) 2-1 [Flink案例开发-滑动窗口单词计数(Streaming)] Flink案例开发需求分析 (13:54) 2-2 [Flink案例开发-滑动窗口单词计数(Streaming)] 滑动窗口单词计数-java代码实现 (31:58) 2-3 [Flink案例开发-滑动窗口单词计数(Streaming)] 滑动窗口单词计数-scala代码实现 (23:25) 3-1 [Flink案例开发-批处理单词计数(Batch)] batch批处理-java代码实现 (12:52) 3-2 [Flink案例开发-批处理单词计数(Batch)] batch批处理-scala代码实现 (05:51) 3-3 [Flink案例开发-批处理单词计数(Batch)] Flink streaming和Batch代码层面的使用 (01:15) 4-1 [Flink集群安装部署+本地代码提交到集群运行] Flink local集群安装以及集群代码提交执行 (26:06) 4-2 [Flink集群安装部署+本地代码提交到集群运行] Flink standalone集群安装部署 (27:40) 4-3 [Flink集群安装部署+本地代码提交到集群运行] Flink on yarn的两种方式 (36:25) 4-4 [Flink集群安装部署+本地代码提交到集群运行] Flink on yarn内部实现 (06:23) 5-1 [Flink 集群HA配置] Flink standalone集群HA配置 (30:34) 5-2 [Flink 集群HA配置] 如何解决集群启动失败的问题 (04:01) 5-3 [Flink 集群HA配置] Flink on yarn集群HA配置 (15:23) 6-1 [Flink scala shell 代码调试] Flink scala shell代码调试 (05:55)





