能力缺口与课程目标

学习 Flink 之前,多数技术学习者对实时计算的理解还停留在 Spark Streaming 的基础用法上,存在几个关键能力缺口:一是难以建立流批统一的处理思维,特别是对 Flink 事件时间、状态管理的抽象理解不足;二是缺乏对 Flink 两种数据源(连续与离散)差异的实践认知;三是混合开发场景中 Scala 和 Java 的性能调优策略掌握不足。这门课直接从 Flink 1.x 版本环境搭建入手,通过 Word Count 等典型算例,系统补齐从数据源接入到底层执行计划优化的完整能力链。重点解决传统批处理思维向流处理范式转换时遇到的标准范式缺失问题,适合已掌握 Scala/Java 基础、了解基本大数据术语的技术学习者,优先弥补 Flink 生态概念的空白。学习顺序建议从 1-5 课环境验证开始,逐步过渡到 6-9 课的 API 实践。

学习门槛与产出验证

课程设置的学习门槛:需具备 Java 8+ 集合框架使用经验、熟悉 Linux 基础命令、了解 HiveQL 等数据仓库查询语言。先看 4-5 课静态数据与套接字数据对比,理解 Flink 数据源的本质差异;重点掌握 8-9 课的 Scala/Java 对比案例,能独立分析编译器报错并选择最优开发语言。学完能独立完成实时日志处理流水线,包括:用 SocketSource 采集模拟数据、通过 Map/FlatMap 自定义转换逻辑、实现带 Checkpoint 的状态化窗口计算,并验证数据倾斜时的 KeyBy 分组性能问题。配套练习建议结合 6-9 课的 API 编程案例,用 IDEA Debug 模式逐行追踪类型推导过程,重点关注 11 课隐式转换的编译原理。

核心模块与进阶方向

课程核心模块集中在 6-13 课的混合开发实践。其中 7-8-9 课的三层语言栈对比是最典型的能力迁移场景:通过 Scala 的隐式转换(11课)理解类型适配机制,用元组(12课)掌握数据规约技巧,对比传统 Java 8 函数式编程(9课)的代码冗余度差异。资料包中的 Scala/Java Word Count 差异分析构成进阶学习的典型案例,建议结合 8-9 课的编译器报错日志,用 Idea Debug 模式逐行追踪类型推导过程。学完能独立完成实时日志处理流水线,包括:用 SocketSource 采集模拟数据、通过 Map/FlatMap 自定义转换逻辑、实现带 Checkpoint 的状态化窗口计算,并验证数据倾斜时的 KeyBy 分组性能问题。建议学习者通过 12 课的元组案例,测试极端数据倾斜场景下的算子背压处理效果,用 Metric 监控 KeyBy 分组后的任务执行时长差异。

课程目录

1 01.体验flink-安装配置-启动 (15:33)
2 02.shell读取文件实现打印输出 (09:15)
3 03.使用flink实现word count (15:34)
4 04.使用静态数据模拟流操作fromElements (02:08)
5 05.运行word count套接字流计算程序 (10:37)
6 06.idea flink api编程 (07:11)
7 07.git以及blink (22:56)
8 08.scala编程实现word count (20:39)
9 09.java编程实现word count (12:29)
10 10.word count idea直接运行演示 (02:15)
11 11.flink scala编程隐式转换异常解决 (02:57)
12 12.使用元组实现word count (01:57)
13 13.使用batch计算实现word count (14:10)
14 14.使用batch计算实现word count (08:05)
15 15.使用batch计算max temp (07:37)
16 16.使用batch计算max temp (05:30)
17 17.使用batch计算max temp排序处理 (11:27)
18 18.flink standalone集群部署 (17:22)
19 19.scala-shell连接到flink集群 (06:32)
20 20.flink集群进程管理命令 (10:32)
21 21.flink集群ha配置 (31:33)
22 22.连接到flink集群分布式调试 (11:19)
23 23.flink核心API解释 (56:06)
24 24.考察flinkjob执行进程分配 (22:31)
25 25.flink tableAPI (35:36)
26 26.flink SQL实现word count查询 (03:57)
27 27.flink tableAPI实现查询 (16:20)
28 28.flink yarn集群 (01:24:36)