Flink实时数仓项目—ODS&DWD&DIM层总结
前言
到这里已经完成了Flink实时数仓项目的ODS层、DWD层&DIM层的设计和实现了,进行一个简单的总结。
一、ODS层
需要掌握以下内容:
项目的数据来源:行为数据,业务数据
架构分析:实时数仓的项目架构
Flink-CDC:
DataStream/FlinkSQL两种使用方法的特点。
Flink-CDC/Maxwell/Cannal之间的优缺点,选取原因。
ODS层的主要工作:保持数据原貌,不做任何修改!
两个主题:ods_base_log,ods_base_db
二、DWD&DIM层
1.行为数据
行为数据:DWD(存放于Kafka)
主要任务:
1)过滤脏数据 --> 脏数据存放到测输出流,还可以计算出脏数据率
2)新老用户校验 --> 前台校验不准确
3)分流 --> 不同类型的日志进行分流,页面日志、启动日志、曝光日志(离线数仓中还有动作日志和错误日志)
4)将分流后的数据分别写入Kafka的不同主题
2.业务数据
业务数据:DWD(存放到Kafka)——DIM(利用Phoenix存放到HBase)
主要任务:
1)过滤数据 --> 过滤掉delete类型的数据
2)使用Flink-CDC读取配置表创建广播流
3)连接主流和广播流并处理
i.广播流数据:
a.解析数据
b.使用Phoenix建表
c.将新来的配置表的数据写入广播状态
ii.主流数据:
a.根据key读取状态
b.根据所需要的列过滤掉不需要的字段
c.根据输出的类型分流(维度表写入HBase,事实表写入Kafka,要在数据中新增SinkTable字段,要不然不知道写入哪张表)
4)提取Kafka和HBase流中的数据
5)HBase流:自定义Sink写入HBase
6)Kafka流:自定义序列化方式

本文总结了Flink实时数仓项目中ODS层、DWD层和DIM层的设计与实现。ODS层主要负责保持数据原貌,通过Flink-CDC处理数据。DWD&DIM层涉及行为数据和业务数据的过滤、校验、分流,以及使用Phoenix将数据存入HBase。
743

被折叠的 条评论
为什么被折叠?



