解决什么问题:从离线数仓到实时架构的落地落地

很多后端开发者在做数仓项目时,容易陷入“只懂SQL,不懂实时计算”的困境。本课程针对的就是想从传统离线数仓(Hive/Spark)转向 Flink 实时数仓开发的工作场景。它不教空洞的理论,而是直接带你构建一套基于 Flink 的分层架构:从 ODS 层采集日志和业务数据,到 DIM 维层处理配置信息,最终落地到 HBase。课程重点解决“如何利用 FlinkCDC 监听 MySQL 变化”、“如何处理 Kafka 中的乱序数据”以及“广播流与主流的关联”等在工程落地中最容易踩坑的实操问题。

适合什么基础:有 Java/Scala 基础,想系统掌握 Flink

这门课不是给完全零基础的小白准备的。你需要具备扎实的 Java 编程能力,了解 Kafka、HBase 等中间件的基本概念。课程内容从基础概念讲起,但核心部分集中在代码编写上,例如 IDEA 环境搭建、GitLab 版本控制、Maxwell 数据采集以及 FlinkCDC 的配置。如果你已经有 Flink 的入门基础,想通过一个完整的项目来串联知识点,这套资料非常适合作为实战演练的素材。

学完能做什么:独立开发实时数仓 ETL 流程

学完这套教程,你不需要再照着 Demo 搬砖,而是能独立承担一个实时数仓项目的开发任务。具体来说,你能掌握从环境搭建、代码版本管理到具体业务逻辑实现的完整闭环。比如,你能够熟练配置 Maxwell 同步 MySQL binlog,编写 Flink 代码从 Kafka 读取数据并清洗,利用 FlinkCDC 维护配置流,并通过广播机制将维度数据同步至 HBase。这意味着你已经具备了处理高并发实时数据的工程能力。

资料怎么用:先搭环境,再读源码,最后复现逻辑

建议先看第 001 到 009 节,完成 IDEA 开发环境和 GitLab 仓库的搭建,这是后续所有代码运行的前提。接着重点看 ODS 和 DIM 层的代码实现(第 015-032 节),这是核心难点。练习时,不要只看视频,建议下载课程代码,在本地复现环境准备、Maxwell 配置、HBase 建表以及广播流关联的每一步逻辑。通过阅读代码中的工具类封装(如 HBaseUtil、FlinkSourceUtil)来提升代码的工程规范性,而不是死记硬背代码。

课程目录

001.教程简介
002.基础_数仓基本概念
003.基础_离线数仓架
004.基础_实时数仓架构
005.基础_ER模型和维度建模
006.基础_事实表和维度表
007.基础_数仓构建流程
008.基础_项目架构以及代码版本控制方式介绍
009.基础_IDEA开发环境搭建
010.环境准备_GitLab的安装
011.环境准备_GitLab的其它配置
012.环境准备_创建用户以及群组
013.环境准备_将初始代码推送到GitLab仓库
014.环境准备_设置Kafka分区数
015.ODS_日志数据采集
016.ODS_配置binlog记录业务数据变化
017.ODS_Maxwell的安装与配置
018.ODS_Maxwell同步数据测试
019.DIM_思路分析_基本流程
020.DIM_思路分析_引入配置表
021.DIM_思路分析_引入FlinkCDC
022.DIM_思路分析_配置表字段完善
023.DIM_FlinkCDC的使用
024.DIM_配置表的创建以及切换开发分支
025.DIM_开发思路分析
026.DIM_基本环境准备以及检查点设置
027.DIM_从Kafka主题中读取数据
028.DIM_转换流中数据类型以及Maxwell问题说明
029.DIM_使用FlinkCDC读取配置表数据
030.DIM_将配置流数据类型封装为实体类对象
031.DIM_封装HBaseUtil工具类
032.DIM_在HBase中建表
033.DIM_广播配置流并和主流进行关联
034.DIM_处理广播流数据
035.DIM_处理主流数据
036.DIM_过滤掉不需要传递的字段
037.DIM_主流数据先到问题分析
038.DIM_在open方法中预加载配置信息
039.DIM_将维度数据同步到HBase表中
040.DIM_封装FlinkSourceUtil工具类
041.DIM_抽取单独的处理函数类
042.DIM_抽取BaseApp基类
043.DIM_抽取方法
044.DIM_封装JdbcUtil工具类
045.DIM_DIM层总结
046.DWD_DWD层介绍
047.DWD_日志分流思路分析
048.DWD_开发思路分析
049.DWD_将脏数据放到侧输出流
050.DWD_创建KafkaSink对象以及Kafka一致性保证
051.DWD_抽取FlinkSinkUtil以及脏数据写到Kafka
052.DWD_新老访客标记修复思路
053.DWD_新老访客标记修复代码实现
054.DWD_埋点日志结构分析
055.DWD_分流代码实现
056.DWD_将不同流的数据写到Kafka主题
057.DWD_抽取方法以及提交代码到GitLab
058.DWD_评论事实表思路分析
059.DWD_FlinkAPI双流Join介绍
060.DWD_内连接
061.DWD_左外连接
062.DWD_右外连接以及全外连接
063.DWD_左外连接结果写到Kafka主题
064.DWD_从Kafka主题中读取数据
065.DWD_从HBase表中读取数据
066.DWD_lookupJoin关联
067.DWD_将关联结果写到Kafka主题
068.DWD_评论事实表开发思路以及环境准备
069.DWD_从topic_db主题中读取数据
070.DWD_过滤出评论数据
071.DWD_从Hbase中读取字典表数据
072.DWD_关联评论表和字典表
073.DWD_将关联的结果写到Kafka主题
074.DWD_抽取工具类封装获取连接器属性的方法
075.DWD_抽取BaseSQLApp基类以及通用的建表方法
076.DWD_加购事实表开发思路分析
077.DWD_过滤出insert类型的加购数据
078.DWD_过滤出update类型的加购数据以及写到Kafka
079.DWD_下单事实表思路分析
080.DWD_下单事实表代码实现