Skip to content

kangapp/FlinkGmall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flink实时数仓

实时数仓基于一定的数据仓库理念,对数据处理流程进行规划、分层,目的是提高数据 的复用性。

概况

实时数仓分层

  • ods:原始数据,日志和业务数据
  • dwd:根据数据对象为单位进行分流,比如订单、页面访问等
  • dim:维度数据
  • dwm:对于部分数据对象进行进一步加工,比如独立访问、跳出行为,也可以和维度表进行关联,形成宽表,依旧是明细数据
  • dws:根据某个主题将多个事实表数据轻度聚合,形成主题宽表
  • ads:把ClickHouse中的数据根据可视化需要进行筛选聚合

实时架构

实时架构

需求模块

开发全部基于Docker环境

日志数据采集(ods)

业务数据库采集(ods)

  • 识别新老用户
  • 利用侧输出流实现数据拆分
  • 将不同的流数据推送到kafka不同的topic
  • FlinkCDC读取db数据进行etl处理
  • 实现动态分流,将db数据动态拆分成事实表数据和维度表数据,采用mysql表存储相应的配置信息,并使用广播流 broacast
  • 维度表数据保存到hbase,事实表数据保存到kafka
  • 读取页面日志kafka数据
  • 状态编程,保留每个用户第一次登录的记录,并设置状态ttl
  • 过滤数据写入kafka
  • 读取页面日志kafka数据
  • 定义数据流watermark
  • 定义模式序列,提取匹配数据和超时数据进行union
  • 数据流写入kakfa
  • 定义支付宽表实体类
  • 订单宽表和支付表进行Join,选择intervalJoin(目前支持事件时间,所以需要指定watermark)
  • 结果数据写入kafka
  • 读取kafka各个明细数据,转换成相同格式对象流
  • 合并数据流,提取时间戳,开窗聚合,补充窗口信息
  • 数据写入clickhouse
  • 从kafka主题中获取各个数据流
  • 将Json字符串数据流转换为统一数据对象的数据流,采用构造者模式
  • 合并数据流,提取时间戳,开窗聚合,补充窗口信息
  • 关联维度补充数据
  • 结果数据写入clickhouse
  • 定义Table流环境
  • 将数据源定义为动态表
  • 通过SQL查询数据,分组、开窗、聚合,生成结果表
  • 把结果表转换为数据流
  • 数据流写入clickhouse
  • 定义Table流环境
  • 注册自定义分词函数
  • 将数据流定义为动态表
  • 利用UDTF将数据拆分
  • 通过SQL查询数据,分组、开窗、聚合,生成结果表
  • 把结果表转换为数据流
  • 数据流写入clickhouse

About

flink实时数仓

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages