Giter VIP home page Giter VIP logo

flinkgmall's Introduction

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

flinkgmall's People

Contributors

kangapp avatar

Stargazers

 avatar  avatar  avatar frontgoo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.