实时数仓DWD层业务数据处理解决思路

DWD层业务数据

在实时数仓中业务数据的变化,可以通过Maxwell或者canal等工具采集到,采用MaxWell将全部数据统一写入一个Topic中, 这些数据包括业务数据,也包含维度数据,这样显然不利于日后的数据处理,所以这个功能是从Kafka的业务数据ODS层读取数据,经过处理后,将维度数据保存到Hbase将事实数据写回Kafka作为业务数据的DWD层

DWD层主要任务

  1. 接收Kafka数据,过滤空值数据
  2. 实现动态分流功能
  3. 把分好的流保存到对应表、主题中

动态分流功能

由于采用MaxWell等工具实时采集业务数据,把全部数据统一写入一个Topic中, 这样显然不利于日后的数据处理。所以需要把各个表拆开处理。但是由于每个表有不同的特点,有些表是维度表,有些表是事实表,有的表既是事实表在某种情况下也是维度表。

在实时计算中一般把维度数据写入存储容器,一般是方便通过主键查询的数据库比如HBase,Redis,MySQL等。

一般把事实数据写入流中,进行进一步处理,最终形成宽表。但是作为Flink实时计算任务,如何得知哪些表是维度表,哪些是事实表呢?而这些表又应该采集哪些字段呢?

这样的配置不适合写在配置文件中,因为这样的话,业务端随着需求变化每增加一张表,就要修改配置重启计算程序。所以这里需要一种动态配置方案,把这种配置长期保存起来,一旦配置有变化,实时计算可以自动感知

这种可以有两个方案实现:

  • 一种是用Zookeeper存储,通过Watch感知数据变化。
  • 另一种是用mysql数据库存储。

建议采用第二种方案,主要是mysql对于配置数据初始化和维护管理,用sql都比较方便,虽然周期性操作时效性差一点,但是配置变化并不频繁

DWD层业务数据处理结果

  • 业务数据保存到Kafka的主题中
  • 维度数据保存到Hbase的表中

DWD层业务数据实现思路

  1. 业务数据: mysql->maxwell->kafka->flink
  2. 动态表配置表的数据: msyql->flink-sql-cdc
  3. 把动态表配置表做成广播流与业务数据进行connect, 从而实现动态控制业务数据的sink方向
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值