Flink实时数仓

发布时间 2023-07-17 16:15:34作者: 张少凯

为什么分层?

复杂的问题简单化
避免重复计算
参考大厂做法

ods层

  1. 采集到ods链路:
    用户行为数据(前端埋点):前端埋点=》Nginx=》日志服务器(springboot--落盘成log)=》flume==》kafka:topic_log
    业务数据(MySQL):mysql-》cdc工具:flinkCDC-》kafka
  2. 为什么使用flinkCDC?有没有对比过其他cdc工具?
    dataX,Maxwell,canal,flinkcdc。dataX是基于查询的,其他三个是监听binlog变化的。实时增量采集需要监听binlog。
    支持断点续传:会将元数据持久化到数据库,记录binlog读取的位置。
    可以同步历史数据
    对flink支持比较友好
    格式更简单,轻量,方便解析。

dwd层

事实表:实时场景,只需要事务型事实表。
事务型:选择业务过程,声明粒度,确认维度,确定事实。
周期型
累积型
维度表:基于星型模型,要构造一级维度(维度整合)。
实时场景如果没有做维度整合:任一张维度表发生更新,都要修改join完的历史结果,不好处理。