从离线到实时:构建 Flink 实时数仓的实战路径

本课程聚焦于 Flink 实时数仓的构建,旨在解决传统离线数仓滞后、无法满足业务实时性需求的痛点。通过完整的工程化项目,读者将掌握从日志采集、配置表管理到维度数据实时同步的全链路技术,熟悉 FlinkCDC 在异构数据源同步中的应用,并了解如何利用广播流机制实现维度数据的动态更新。课程涵盖了数仓分层架构设计、ER模型构建以及基于 GitLab 的代码版本管理规范,适合有一定 Java/Scala 基础、希望从离线数仓向实时数仓转型的后端开发人员。

核心能力缺口与学习重点

对于备考或转岗的同学,本教程着重填补“如何将理论落地”的空白。建议先掌握 Flink 的基础算子与流处理概念,重点关注 ODS 层的数据采集与清洗(含 Maxwell 与 FlinkCDC 配置)、DIM 层的广播流实现以及 HBase 的交互操作。在学习过程中,应重点理解如何处理主流与广播流的并发问题,以及如何通过配置表实现代码的灵活性扩展。这些内容是面试中常考的实时数仓落地难点,也是独立开发实时数仓模块的必备技能。

练习建议与产出预期

为了确保学有所成,请务必配合资料包中的代码进行本地调试。在环境搭建部分,建议手动复现 GitLab 仓库的初始化与 Kafka 分区设置;在 DIM 层数据处理环节,尝试修改配置表字段后观察程序运行结果的变化。学完本课程,你应该能够独立编写 Flink 程序,实现从 Kafka 读取日志并通过广播流机制将配置表动态同步至 HBase 的功能,具备构建和维护小型实时数仓系统的工程能力。

课程目录

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_下单事实表代码实现