• 实时数据仓库==(总结)


    实时数据仓库(总结)

    1. 开源实时数仓和离线数仓的区别

    • API计算引擎

      离线数据仓库主要使用hive sql 和spark sql进行开发

      实时数据仓库主要是使用flink sql开发

    • 数据存储

      离线数据仓库保存在hdfs上

      实时数据仓库的流表的数据保存在kafka中,维表的数据保存在hbase。或者mysql中

    • 数据仓库分层

      离线数据仓库和实时数据仓库分层的规则基本一致,离线数据仓库在构建模型时,会尽量构建公共表,减少重复计算ODS,DWD,DWS,ADS

      实时数据仓库在做模型开发的时候会尽量减少使用中间层,可以降低数据的延迟,

    • 数据延时

      离线一般采用T+1模式,第二天计算前一天的数据,在项目中一般到第二天早上6点左右才能将前一天的数据处理完

      实时的延时一般在秒级别或者在分钟级别

    • 架构

      离线:hive,hadoop,spark,调度,离线涉及的组件比较少,不容易问题,出现问题容易解决

      实时:hive,kadoop,kafka,zookeeper,flink,hbase,mysql,监控,出现问题不好定位,为什么用到这么多组件:目前还没有一个成熟的开源的实时数据仓库的解决方案

    2. 项目架构

    1. 数据源:电商的业务会产生数据,数据保存在数据库中,数据库汇总的数据会不断的插入和更新

    2. 数据采集:使用canal实时监控mysql binlog 日志,将数据实时写到kafka中,数据写入的格式为 canal-json

    3. 数据存储

      • ODS,DWD,DWS的数据保存在kafka中

      • DIM和ADS数据保存在mysql或者hbase中

      • kafka中的数据默认保存7天,但是我们在项目中一般设置为3天

        同时每个分区默认设置两个副本。mysql中的数据量最好不要超过500万条

    4. 数据处理:使用flink sql处理,注意流表和维表关联的问题

    5. 数据应用 BI api:需要使用spring boot 代码对应一个表

    3. 功能模块

    • ODS:

      使用canal采集数据,在flink sql中建表,一个topic对应一个表

    • DWD:

      • 在dwd主要涉及到建模
      • 数据仓库建模使用的是星形建模
      • 事实表建模流程:
        1. 选择业务过程,选择公司的业务线创建表
        2. 声明粒度:确定每一行数据的函数,是每次还是每天,每月
        3. 确定维度:维度是后面进行指标计算的分组条件,比如时间维度,地区维度,用户维度,商品维度
        4. 确定实时:金额,数量
        5. 冗余维度:为了减少关联可以在事实表中将维度表中的信息冗余进来,比如将用户的年龄,籍贯等信息融入到事实表中
      • 支付事实表
      • 订单事实表
    • DIM:维度建模

      1. 维度退化:将多个维度退化成一个维度表
      2. 确定主维度
      3. 确定维度信息
    • ADS:

      1. 基于dwd层或者dws层的事实表统计指标
      2. 将统计好的指标统计到mysql中
      3. 供上层应用使用
      4. 支付类指标
      5. 订单类
  • 相关阅读:
    正则表达式常用语法解析
    微信小程序引入阿里巴巴iconfont图标并使用
    JKPacket权威指南——联系我们
    JS如何判断文字是否溢出(被ellipsis)?
    一个不用写代码的案例,来看看Flowable到底给我们提供了哪些功能?
    论文笔记:Deep Representation Learning for Trajectory Similarity Computation
    node + sqlite + Sequelize (ORM:Object-Relational Mapping对象关系映射)
    【DevOps】Git 图文详解(二):Git 安装及配置
    好用的云笔记具备哪些特点,这3款云笔记亲测好用
    java常用部署脚本
  • 原文地址:https://blog.csdn.net/weixin_48370579/article/details/126339345