项目概述
本项目针对实时数仓中的dim层,使用flik获取维度数据以及维度表结构把处理过的数据和维度表同步到habse中,同步采用的是雪花模型,遵循三范式,对维度数据进行实时的增删改查。
对维度表进行动态拆分功能。
动态拆分功能就是使用flink-CDC对维度配置表进行实时监控,如果新增了一张维度表,hbase中也新增这张维度表,如果删除一张表同样在hbase中也删除这张表。
最终将编译代码上传到gitlab上。
第1步:创建抽象类和抽象方法
注意:测试阶段可以先把flink检查点代码给注释掉,可以提高效率,上线的时候务必开启
getkafkaSource读取kafka数据
第2步创建主类继承抽象类实现抽象方法
2.1对ods读取的原始数据进行etl数据清洗
对代码进行封装
2.2使用flinkcdc读取配置表数据并实现增加表和删除表功能
在util类中创建方法
在主类中调用
2.3在hbase中创建表
首先创建util类
编写javabean类
在主类中调用该方法
对代码进行封装
2.4做成广播流
作用是:广播状态的key用于判断是否是维度表,value用于补充信息到hbase
2.5连接主流和广播流
注意:这里有一个bug,就是主流的数据会比广播流的数据先到,会造成数据丢失
bug已修复
创建方法
在主类调用
对代码进行封装
2.6筛选出需要写出的字段
对代码进行封装
2.7把数据写入到hbase中
在hbaseutil中编译方法
创建写入方法
对类进行调用
3.整体运行流程:
4.整体演示
现在我们要把处理过的数据写入到hbase中
mysql中的维度表结构
mysql中的数据表
通过代码编译把在根据维度配置表结构,把属于维度表在hbase中创建
再对表进行判断把维度表中需要的字段写入到hbase中