能力缺口:只会写流处理,遇到批数据清洗就卡壳

很多开发者把 Flink 当成纯粹的流处理引擎,简历上写着“精通实时计算”,但在实际实时数仓建设里,一旦遇到历史数据回溯、离线维度表初始化或者大批量文件清洗,往往直接卡壳。这门课解决的核心问题就是:如何用 Flink 的 DataSet 批处理端补齐实时数仓中的离线数据流转环节。它不跟你扯大厂架构演进,而是直接按住你的手去写批处理程序,专治“只会 DataStream、不懂 DataSet”的偏科症状。如果你目前只会跑简单的流式聚合,对批量读取外部存储、多表关联拼装维度等操作完全没有概念,或者正准备转岗到实时数仓开发岗但缺乏批流一体的实操经验,那么这套实操导向的资料正好对应你的短板。

建议先看哪几块及资料配合练习法

建议直接跳过泛泛的课程介绍,从手写批处理程序和读取外部数据源这两块看起。不要光看视频跟着点头,必须把配套的资料包当成你的随堂练习册。具体配合方法:先看完手写程序和读取 CSV 数据源的演示,立刻在本地环境建一个一模一样的工程,自己敲一遍数据源接入逻辑;接着看递归读取目录下文件的操作,自己造一个包含子文件夹的测试数据集,跑通递归读取。资料里的 Map、FlatMap、MapPartition 等转换算子实操,不要只记参数,要在本地真实跑一遍数据流转,观察每个算子输入输出的数据条数和分区变化。遇到过滤和聚合操作,自己造一组带脏数据的数据集,先过滤再聚合,验证结果是否符合预期。看 Join 和 Union 的实操时,必须自己准备两张测试表,在本地跑通关联和合并,观察左右表数据不匹配时的输出情况。每看完一个算子演示,立刻用配套资料里的同款逻辑写一个变体程序,比如把内关联改成外关联,看报错在哪,怎么修。别等全看完再动手,看一个补一个,别假装看一遍就会了。

学完能独立做什么及自测问题

学完这套实操,你应该能独立完成实时数仓中离线层的批量数据接入和清洗任务。具体来说,给你一批历史 CSV 文件或者多层嵌套目录的数据,你能写出完整的 Flink 批处理程序,把数据读进来,做去重、过滤、转换和聚合,最后把两张表通过 Join 拼成一张宽表,供下游实时链路使用。不再需要抄别人的模板,而是能根据业务需求自己组合算子。看完资料后,先问自己几个问题:递归读取目录时,文件格式不一致怎么处理?MapPartition 和普通 Map 在什么场景下用哪个,性能差异在哪?Union 和 Join 都能合并数据,但语义和输出结果有什么本质区别?默认 Join 操作如果右表数据量大导致内存溢出,该怎么调整?如果这些问题你答不上来,说明只是跟着视频看了一遍,没真正吃透,回头把对应模块的实操再敲一遍,直到能独立默写出核心逻辑为止。

课程目录

1-1 [课程介绍] 课程内容安排与介绍 (05:11)
2-1 [Flink DataSet] 手写一个Flink 批处理程序 (14:22)
2-2 [Flink DataSet] 读取CSV格式数据源 (20:01)
2-3 [Flink DataSet] 递归读取目录下文件 (07:15)
2-4 [Flink DataSet] Map&FlatMap&MapPartition实操 (08:18)
2-5 [Flink DataSet] 过滤和聚合转换操作 (03:27)
2-6 [Flink DataSet] 数据去重实操 (05:32)
2-7 [Flink DataSet] Union实操 (06:19)
2-8 [Flink DataSet] 默认Join实操 (10:05)
2-9 [Flink DataSet] Join并实现JoinFunction实操 (11:26)
2-10 [Flink DataSet] left outer Join实操 (08:34)
2-11 [Flink DataSet] right outer Join实操 (06:30)
2-12 [Flink DataSet] full outer Join实操 (06:44)
2-13 [Flink DataSet] DataSink数据输出 (05:13)
2-14 [Flink DataSet] 广播变量实操 (22:41)
2-15 [Flink DataSet] 分布式缓存实操 (15:05)
2-16 [Flink DataSet] 构造方法传参实操 (06:08)
2-17 [Flink DataSet] withParameters传参实操 (05:13)
2-18 [Flink DataSet] 全局传参实操 (05:08)
3-1 [Flink DataSet容错] Flink 批处理容错 (03:15)
3-2 [Flink DataSet容错] Fixed delay和Failure rate重启策略使用 (10:43)
4-1 [Flink DataSet Connectors] Flink 批处理Connector (05:21)
4-2 [Flink DataSet Connectors] Flink HBaseSink代码实现 (29:40)
4-3 [Flink DataSet Connectors] Flink HBaseSink测试运行 (10:08)
4-4 [Flink DataSet Connectors] Flink HBaseSource实现 (16:07)
5-1 [Flink Table API & SQL] Flink Table API和SQL介绍 (07:32)
5-2 [Flink Table API & SQL] Flink SQL编程套路-Stream SQL (13:53)
5-3 [Flink Table API & SQL] Flink SQL编程套路-Batch SQL (06:09)
5-4 [Flink Table API & SQL] Flink SQL编程套路-Batch Table (03:49)
5-5 [Flink Table API & SQL] Flink API&SQL流处理介绍 (02:53)
5-6 [Flink Table API & SQL] 动态表与连续查询 (08:02)
5-7 [Flink Table API & SQL] 表转流-Append-only 模式 (22:53)
5-8 [Flink Table API & SQL] 表转流-Retract 模式 (04:25)
5-9 [Flink Table API & SQL] Flink SQL读取Kafka代码实现 (16:16)
5-10 [Flink Table API & SQL] Flink SQL读取Kafka测试运行 (09:15)
5-11 [Flink Table API & SQL] Flink Table API实操 (19:31)
5-12 [Flink Table API & SQL] Flink SQL实操 (08:45)
6-1 [Flink 实时数仓项目实战] 项目需求 (05:23)
6-2 [Flink 实时数仓项目实战] 架构设计 (06:27)
6-3 [Flink 实时数仓项目实战] 解决方案 (05:03)
6-4 [Flink 实时数仓项目实战] Mysql主备复制实现原理 (03:03)
6-5 [Flink 实时数仓项目实战] Canal架构与工作原理 (05:48)
6-6 [Flink 实时数仓项目实战] MySQL binlog介绍 (05:10)
6-7 [Flink 实时数仓项目实战] MySQL安装 (08:30)
6-8 [Flink 实时数仓项目实战] MySQL服务启动与设置 (04:18)
6-9 [Flink 实时数仓项目实战] MySQL新建账号及开启Binlog (07:52)
6-10 [Flink 实时数仓项目实战] Canal-Kafka安装与配置 (04:55)
6-11 [Flink 实时数仓项目实战] Canal-Kafka服务启动与测试 (07:36)
6-12 [Flink 实时数仓项目实战] 数据库建模 (07:59)
6-13 [Flink 实时数仓项目实战] 商品表数据接入(1) (14:42)
6-14 [Flink 实时数仓项目实战] 商品表数据接入(2) (03:03)
6-15 [Flink 实时数仓项目实战] 订单表数据实时接入(1) (32:59)
6-16 [Flink 实时数仓项目实战] 订单表数据实时接入(2) (11:54)
6-17 [Flink 实时数仓项目实战] 订单表数据实时接入(3) (04:32)
6-18 [Flink 实时数仓项目实战] Flink全量拉取模板(1) (20:06)
6-19 [Flink 实时数仓项目实战] Flink全量拉取模板(2) (11:51)
6-20 [Flink 实时数仓项目实战] Flink全量拉取模板(3) (09:05)
6-21 [Flink 实时数仓项目实战] 动手实现Flink版本的Sqoop(1) (20:04)
6-22 [Flink 实时数仓项目实战] 动手实现Flink版本的Sqoop(2) (05:58)
6-23 [Flink 实时数仓项目实战] Flink增量实时同步模块在生成环境中的难点问题 (14:34)
6-24 [Flink 实时数仓项目实战] Flink增量实时同步模块实现(1) (13:17)
6-25 [Flink 实时数仓项目实战] Flink 增量实时同步模块实现(2) (13:13)
6-26 [Flink 实时数仓项目实战] Flink 增量实时同步模块实现(3) (12:47)
6-27 [Flink 实时数仓项目实战] Flink增量实时同步模块实现(4) (11:13)
6-28 [Flink 实时数仓项目实战] Flink增量实时同步模块整体联调(1) (08:09)
6-29 [Flink 实时数仓项目实战] Flink增量实时同步模块整体联调(2) (21:16)
6-30 [Flink 实时数仓项目实战] 项目总结 (06:44)