大数据 - DWD&DIM 业务数据

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 大数据 - DWD&DIM 业务数据

业务数据的变化,我们可以通过 FlinkCDC 采集到,但是 FlinkCDC 是把全部数据统一写入一个 Topic 中, 这些数据包括事实数据,也包含维度数据,这样显然不利于日后的数据处理,所以这个功能是从 Kafka 的业务数据 ODS 层读取数据,经过处理后,将维度数据保存到 HBase,将事实数据写回 Kafka 作为业务数据的 DWD 层

实现动态分流功能

由于 FlinkCDC 是把全部数据统一写入一个 Topic 中, 这样显然不利于日后的数据处理。所以需要把各个表拆开处理。但是由于每个表有不同的特点,有些表是维度表,有些表是事实表。

在实时计算中一般把维度数据写入存储容器,一般是方便通过主键查询的数据库比如HBase,Redis,MySQL 等。一般把事实数据写入流中,进行进一步处理,最终形成宽表。

维度数据不放 Redis 的原因:User 用户维度数据量很大,其它维度还行。

为什么不放 MySQL: 并发压力大

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

这种可以有两个方案实现

  • 一种是用 Zookeeper 存储,通过 Watch 感知数据变化;
  • 另一种是用 mysql 数据库存储,周期性的同步;(有配置表,指定哪些表的数据发给哪些主题)
  • 另一种是用 mysql 数据库存储,使用广播流。
    这里选择第二种方案,主要是 MySQL 对于配置数据初始化和维护管理,使用 FlinkCDC 读取配置信息表,将配置流作为广播流与主流进行连接。

  • 获取执行环境
  • 消费Kafka ods_base_db 主题数据创建流
  • 将每行数据转换为JSON对象并过滤(delete) 主流
  • 使用FlinkCDC消费配置表并处理成 广播流
  • 连接主流和广播流
  • 分流 处理数据 广播流数据,主流数据(根据广播流数据进行处理)
  • 提取Kafka流数据和HBase流数据
  • 将Kafka数据写入Kafka主题,将HBase数据写入Phoenix表
  • 启动任务

table_process

table_process 主健:sourceTable + type
sourceTable 根据表名分流
type 用来区分新增、变更的数据,不同类型的数据放到不同主题表不
sinkType 放Kafka还是其它地方
sinkTable 如果是维度表,就是Phoenix表名,如果是 kafka 就是 主题
sinkColumns 提供字段,为了自动建表
pk Phoenix 建表必须有主健
extend 指定要不要做分区表,等等

Demo

sourceTable type sinkType sinkTable
base_trademark insert hbase dim_xxx(Phoenix 表名)
order_info insert kafka dwd_xxx(主题名)
CREATE TABLE `table_process` (
`source_table` varchar(200) NOT NULL COMMENT '来源表',
`operate_type` varchar(200) NOT NULL COMMENT '操作类型 insert,update,delete',
`sink_type` varchar(200) DEFAULT NULL COMMENT '输出类型 hbase kafka',
`sink_table` varchar(200) DEFAULT NULL COMMENT '输出表(主题)',
`sink_columns` varchar(2000) DEFAULT NULL COMMENT '输出字段',
`sink_pk` varchar(200) DEFAULT NULL COMMENT '主键字段',
`sink_extend` varchar(200) DEFAULT NULL COMMENT '建表扩展',
PRIMARY KEY (`source_table`,`operate_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

1.读取状态2.过滤数据

3.分流

ODS:

  • 数据源:行为数据,业务数据
  • 架构分析:
    FlinkCDC: DataStream/FlinkSOIFlinkCDC/Maxwell/Canal保持数据原貌,不做任何修改! ods_base_log,ods_base_db

DWD-DIM:

行为数据:DWD(Kafka)

1.过滤脏数据 --> 侧输出流 脏数据率

2.新老用户校验 --> 前台校验不准

3.分流 --> 侧输出流 页面、启动、曝光、动作、错误

4.写入Kafka

业务数据:DWD (Kafka)-DIM(Phoenix)

1.过滤数据-->删除数据

2.读取配置表创建广播流

3.连接主流和广播流并处理

1)广播流数据:

  • 解析数据
  • Phoenix 建表(HBase)
  • 写入状态广播

2)主流数据

  • 读取状态
  • 过滤字段
  • 分流(添加 SinkTable 字段)

4.提取Kafka和 HBase 流,分别对应的位置

5.HBase流:自定义 Sink

6.Kafka流:自定义序列化方式

大数据-数据仓库-实时数仓架构分析

大数据-业务数据采集-FlinkCDC

大数据 - DWD&DIM 行为数据

大数据 - DWD&DIM 业务数据

大数据 DWM层 业务实现

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
9月前
|
机器学习/深度学习 传感器 分布式计算
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
603 14
|
11月前
|
数据采集 分布式计算 DataWorks
ODPS在某公共数据项目上的实践
本项目基于公共数据定义及ODPS与DataWorks技术,构建一体化智能化数据平台,涵盖数据目录、归集、治理、共享与开放六大目标。通过十大子系统实现全流程管理,强化数据安全与流通,提升业务效率与决策能力,助力数字化改革。
379 4
|
11月前
|
分布式计算 DataWorks 数据处理
在数据浪潮中前行:记录一次我与ODPS的实践、思考与展望
本文详细介绍了在 AI 时代背景下,如何利用阿里云 ODPS 平台(尤其是 MaxCompute)进行分布式多模态数据处理的实践过程。内容涵盖技术架构解析、完整操作流程、实际部署步骤以及未来发展方向,同时结合 CSDN 博文深入探讨了多模态数据处理的技术挑战与创新路径,为企业提供高效、低成本的大规模数据处理方案。
475 3
|
11月前
|
SQL 人工智能 分布式计算
ODPS:数据浪潮中的成长与突围
本文讲述了作者在大数据浪潮中,通过引入阿里云ODPS体系(包括MaxCompute、DataWorks、Hologres)解决数据处理瓶颈、实现业务突破与个人成长的故事。从被海量数据困扰到构建“离线+实时”数据架构,ODPS不仅提升了数据处理效率,更推动了技术能力与业务影响力的双重跃迁。
|
10月前
|
机器学习/深度学习 运维 监控
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
908 0
|
9月前
|
传感器 人工智能 监控
数据下田,庄稼不“瞎种”——聊聊大数据如何帮农业提效
数据下田,庄稼不“瞎种”——聊聊大数据如何帮农业提效
277 14
|
11月前
|
SQL 人工智能 分布式计算
在数据浪潮中前行:我与ODPS的实践、思考与展望
在数据驱动决策的时代,企业如何高效处理海量数据成为数字化转型关键。本文结合作者实践,深入解析阿里云自研大数据平台 ODPS 的技术优势与应用场景,涵盖 MaxCompute、DataWorks、Hologres 等核心产品,分享从数据治理到实时分析的落地经验,并展望其在 AI 与向量数据时代的发展前景。
431 70
|
9月前
|
机器学习/深度学习 传感器 监控
吃得安心靠数据?聊聊用大数据盯紧咱们的餐桌安全
吃得安心靠数据?聊聊用大数据盯紧咱们的餐桌安全
290 1
|
9月前
|
数据采集 自动驾驶 机器人
数据喂得好,机器人才能学得快:大数据对智能机器人训练的真正影响
数据喂得好,机器人才能学得快:大数据对智能机器人训练的真正影响
888 1
|
10月前
|
机器学习/深度学习 监控 大数据
数据当“安全带”:金融市场如何用大数据玩转风险控制?
数据当“安全带”:金融市场如何用大数据玩转风险控制?
553 10