网易首页 > 网易号 > 正文 申请入驻

场景化、重实操,分享一个实时数仓实践案例

0
分享至

大部分数据团队在进行实时业务建设的初期,都会出现烟囱式开发、一个任务搞定全部数据加工环节等问题,缺乏实时数据的管理和实时数仓分层建设的规范意识。随着实时场景的进一步丰富,出现了实时数据复用、业务方自助进行实时取数等需求,因此要求数据团队要像管理离线数据一样对实时数据进行有规范的实时数仓管理。

本文将从一个实际业务场景和一个模拟数仓构建的案例来说明如何利用 EasyData 实时开发平台来建设实时数仓。

1

实际业务场景

1.1 背景介绍

业务方是某移动 APP 的运营团队,需求是要实时监控各类运营活动的 ABtest 的实验效果,以便业务方根据实验效果随时调整运营投放策略、投放目标用户和投放比例。

1.2 业务数据分层

通常业务方的实时数据流转链路包含实时数据采集、实时数据加工处理、实时数据落库查询等步骤,在此用户的ABtest 场景中,数据加工链路如下图所示:

  1. 第一步:用户的日志数据经过实时采集写入 ODS 层的 Kafka 中。ODS 层数据为原始未加工的业务数据,保存在 Kafka,7 天后自动清理。

  2. 第二步:ODS 层数据经过 Flink 任务处理写入 DWD 层 Kafka 中。DWD 层数据为经过清洗的数据。

  3. 第三步:DWD 层数据经过 Flink 任务处理写入 DWS 层 KUDU 数据库中落库。DWS 层数据为经过聚合、过滤等加工步骤,可以向业务方提供的数据。

  4. 第四步:业务方在需要时通过 Impala 查询 KUDU 数据库中的数据生成报表。

通过以上实时数据加工链路,业务方可实现实时报表展示,时效性较离线加工链路大大提高,可以满足业务方要求数据实时更新的需求。

1.3 业务痛点

在这个业务场景中 ODS 层、DWD 层的 Kafka 数据在其他加工链路中也需要被复用,但在其他链路加工过程中,同样的 Topic 需要不断重复在不同任务中进行 Flink Table 的定义,每次定义用户均需要使用 DDL 语句定义字段、表配置等,重复工作很多,同时在任务中进行表定义时,数据管理者无法感知哪些数据已被使用,也无法判断是否有可以优化的数据流转链路。

1.4 产品方案

EasyData 实时开发模块中为用户提供了实时流表登记和管理的功能,辅助用户进行实时数仓的建设。实时流表是 EasyData 实时开发模块中的特有概念。流表的内容为 Kafka,Rocketmq 等没有明确 schema 的消息中间件的元数据。在平台通过登记流表并在任务中直接引用流表的方式即可将这部分元数据进行复用。

同时在流表管理模块中,用户可以查看流表的定义。此外,按照业务方的数仓规范中的表命名规范登记流表后,可以根据流表的表名判断流表的分层归属。在接下来的规划中,数仓流表模块将支持数据血缘查看、数据预览、使用数据模型建表等功能,基于流表元数据进行更完整更易用的实时数仓管理。

在下方模拟案例介绍中,将为大家讲解如何定义和使用流表,以及如何通过登记流表进行数仓建设。

2

案例场景介绍

业务目标:统计某 APP 实时访问的 DAU,需要统计的值包括总 DAU,各设备类型 DAU(iPhone、华为、OPPO、其他)。

业务数据链路:

  1. 第一步:通过 CDC 任务采集用户访问数据数据实时变更至 Kafka(对应案例步骤第一步)

  2. 第二步:将 ODS 层 Kafka 数据通过 Flink 任务进行清洗和聚合,写入 MySQL 落库(对应案例步骤第二、三步)

  3. 第三步:将 MySQL 数据通过 BI 报表展示(对应案例最终结果)

3

案例操作步骤

3.1 准备阶段:准备模拟数据

3.1.1 数据源准备

需准备用于实践的 MySQL 数据源和 Kafka 数据源。

3.1.2 数据表准备

(1)准备 DS 层源端表:DAU_DS

此表用于记录用户访问数据。表结构与样例数据如下:

(2)准备 DWD 层结果表:DAU_FINAL

此表用于统计最终结果。表结构如下:

注意:由于模拟案例最终希望直接展示不同用户的计算结果,故需要向同一张已提前制作好对应 BI 报表的表内写数据,每人更新一行数据。正常业务场景下根据业务需求决定结果表结构和数量。

3.2 第一步:创建 CDC 任务

3.2.1 创建 CDC 任务

任务名称可自行命名,任务保存位置可选择根目录或创建以自己名字命名的目录。任务环境和任务类别为任务标签信息,选择测试和默认标签即可,不影响任务实际运行。

3.2.2 编辑 CDC 任务

源端配置:

表:DAU_DS

传输起始位点:

  1. 若只想消费新增数据,请选择最新数据,最终结果报表中将仅有体验当日的数据。

  2. 若想先消费历史存量数据,之后再消费最新数据,请选择全量初始化,最终结果报表中将有历史数据。

目标端配置:

类型:kafka

数据源:poc_kafka

Topic:自行命名,可通过目标 Topic 生成规则生成,也可在目标 Topic 中手动修改,建议修改目标 Topic 名称为自己的名称,方便下一步新建流表时使用。此处选择不存在的 Topic,在任务运行后对应 Topic 将被自动创建。

序列化方式:canal-json

3.2.3 保存并一键发布任务

点击页面上方的 保存 和 一键发布 按钮,填写任意提交描述,将任务发布至实时运维列表。

成功发布后可点击 运维 按钮前往任务运维页面。

3.2.4 启动任务

在运维页面找到对应任务后点击 启动 按钮启动任务。

任务成功启动,任务状态变为运行中时,创建 CDC 任务步骤操作完成。

3.3 第二步:创建 ODS 层流表

点击实时开发页面左侧目录第四项流表,打开流表管理页面。点击页面右上角创建表按钮,开始创建流表。

表名:自行命名

topic:填写上一步 CDC 任务的目标 Topic 名称

序列化方式:canal-json

填写完以上信息后可开始进行字段自动解析。

字段信息获取方式选择自动解析,之后点击获取数据,获取到数据样例后点击解析,即可解析出流表的字段信息。

Tip:若 CDC 任务正常运行但此处未获取到样例数据,可能是因为数据暂未写入,稍等一分钟后重新尝试。

字段信息确认无误后即可保存流表。

保存流表成功,即为此步骤操作完成。

3.4 第三步:创建 SQL 任务

3.4.1 创建 SQL 任务

引擎请选择 FLINK-1.14。其他类似创建 CDC 任务步骤。

3.4.2 编辑 SQL 代码

代码逻辑为:将同一天的用户方式数据按日期聚合,并统计当天的DAU总数以及各设备类型的DAU。

在代码中引用流表时,直接使用 [库].[表] 二元组的写法即可使用对应的流表。

注意以下内容在拷贝代码后需自行更改:

  1. Kafka消费者组id配置,需要更改配置中的流表名称为自己的流表名称

  2. Kafka流表名称,需要更改为上一步中自己登记的流表名称

  3. 插入结果表的submitter字段值,需要更改为自己的名字

具体要修改的内容请见代码中的标注。

-- 设置Kafka消费者组id,需要更改自己创建的流表名称, 配置方式:'{流表名称}.connections.group.id' = '{groupid-name}'set '这里填流表名称.connections.group.id' = 'example001'; -- 设置读取消息队列的位置, 配置方式:'{流表名称}.scan.startup.mode' = '{earliest-offset / latest-offset}'set '这里填流表名称.scan.startup.mode' = 'earliest-offset'; -- 设置流表主键,配置方式:'{流表名称}.primary.keys' = '{primary key name}'set '这里填流表名称.primary.keys' = 'id';--设置源端表表名CREATE view v1 ASSELECT SUBSTRING(visitTime, 0, 10) AS `date`, equipment from 这里填流表库名称.这里填流表名称;CREATE view v2 AS SELECT `date`, equipment, COUNT(equipment) AS eq_dauFROM v1GROUP BY `date`, equipment;--将你的名字填入 submitter 字段CREATE view v3 ASSELECT '这里填你的名字' AS submitter, `date`, SUM(CASE equipment WHEN 'iPhone' THEN eq_dau ELSE 0 END) AS iPhoneDAU, SUM(CASE equipment WHEN 'Huawei' THEN eq_dau ELSE 0 END) AS HuaweiDAU, SUM(CASE equipment WHEN 'OPPO' THEN eq_dau ELSE 0 END) AS oppoDAU, SUM(CASE equipment WHEN 'other' THEN eq_dau ELSE 0 END) AS otherDAUFROM v2 GROUP BY `date`;CREATE VIEW v4 ASSELECT (v3.iPhoneDAU + v3.HuaweiDAU + v3.oppoDAU + v3.otherDAU) AS totalDAU, submitter, `date`, iPhoneDAU, HuaweiDAU, oppoDAU, otherDAUFROM v3;set 'DAU_FINAL.primary.keys' = 'submitter,date';INSERT INTO MySQL数据源标识.MySQL数据库名称.DAU_FINALSELECT * FROM v4;

3.4.3 发布 SQL 任务并启动任务

保存并发布 SQL 任务,并启动任务。操作方法与 CDC 任务的发布和启动相同。

SQL 任务成功启动且状态变为运行中,则此步骤操作完成。

3.4.4 创建 BI 报表并展示数据结果

在有数 BI 中创建对应报表,查看最终的统计结果即可。刷新报表数据即可看到报表数据实时更新后的结果。预期效果如下:

(1)折线图:

(2)报表

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
普京接班人去世,差点当上俄罗斯总统,直接打乱了俄罗斯国运

普京接班人去世,差点当上俄罗斯总统,直接打乱了俄罗斯国运

古史青云啊
2026-06-28 11:31:02
内娱完了?短剧演员杀进综艺,全员素颜上阵,直接把明星脸打肿!

内娱完了?短剧演员杀进综艺,全员素颜上阵,直接把明星脸打肿!

可乐谈情感
2026-06-28 14:28:57
英国准首相与特朗普积怨十年,美英两国关系或迎来最冷时刻

英国准首相与特朗普积怨十年,美英两国关系或迎来最冷时刻

策前论
2026-06-28 23:21:54
一段关系结束了,女人会忘记爱过的男人吗?3个女人说了实话

一段关系结束了,女人会忘记爱过的男人吗?3个女人说了实话

叶飞飞情感屋
2026-06-28 19:29:16
大闹航班女子社会性死亡!女子正脸流出,知情人曝更多,评论炸了

大闹航班女子社会性死亡!女子正脸流出,知情人曝更多,评论炸了

轩逸阿II
2026-06-27 23:07:17
PCB真正的主线排出来了 第一梯队才是最缺货的

PCB真正的主线排出来了 第一梯队才是最缺货的

风风顺
2026-06-22 02:20:07
女演员千万别整容,看42岁王佳佳和40岁江疏影同框,就知道了

女演员千万别整容,看42岁王佳佳和40岁江疏影同框,就知道了

芬霏剧时光
2026-06-26 11:31:34
高市政府失算了!日本高端光刻胶全面断供,却不想中国早就料到了

高市政府失算了!日本高端光刻胶全面断供,却不想中国早就料到了

青桅
2026-06-28 18:19:11
连爆三部韩剧,Netflix又赢麻了

连爆三部韩剧,Netflix又赢麻了

来看美剧
2026-06-28 19:44:56
网传大疆全系涨价3%-8% ,官方回应:消息不实,无调价计划

网传大疆全系涨价3%-8% ,官方回应:消息不实,无调价计划

蓝鲸新闻
2026-06-28 19:22:04
申花今年耗损有点多!联赛没打前就有伤病

申花今年耗损有点多!联赛没打前就有伤病

80后体育大蜀黍
2026-06-28 22:39:52
关灯后女人没差别?事实全然相反,每位女性都有着独有的特质

关灯后女人没差别?事实全然相反,每位女性都有着独有的特质

千秋文化
2026-06-23 20:12:39
最无解的顶级人格:城府极深,却极度坦诚

最无解的顶级人格:城府极深,却极度坦诚

书窗小记
2026-06-19 15:15:13
一年赚一万亿人民币!他,赌出亚洲最疯狂的科技公司

一年赚一万亿人民币!他,赌出亚洲最疯狂的科技公司

华商韬略
2026-05-20 10:21:40
内马尔也没想到,被全足坛都往死里针对的他,如今对手却不敢铲?

内马尔也没想到,被全足坛都往死里针对的他,如今对手却不敢铲?

小莜读史
2026-06-26 18:46:05
昔日当红女星盖丽丽,早年的复古造型写真

昔日当红女星盖丽丽,早年的复古造型写真

娱你同欢
2026-06-24 20:40:59
阿根廷世界杯头号卧底!整场隐身拖垮全队,真的不能再上他了!

阿根廷世界杯头号卧底!整场隐身拖垮全队,真的不能再上他了!

奶盖熊本熊
2026-06-28 12:22:17
周星驰御用婆婆被曝晚年凄惨,被骗积蓄房产住养老院,一生未婚育

周星驰御用婆婆被曝晚年凄惨,被骗积蓄房产住养老院,一生未婚育

知法而形
2026-06-18 14:29:20
内存大涨价,玩家用DDR1平台成功运行Win11系统

内存大涨价,玩家用DDR1平台成功运行Win11系统

IT之家
2026-06-28 12:25:11
CPTPP准备接收菲律宾,中国更早申请加入,却仍被卡在第一步之外

CPTPP准备接收菲律宾,中国更早申请加入,却仍被卡在第一步之外

牛锅巴小钒
2026-06-28 15:36:45
2026-06-29 03:07:00
ITPUB学院
ITPUB学院
分享技术干货,了解最新动态
1242文章数 629关注度
往期回顾 全部

科技要闻

DeepSeek最新论文:如何让大模型跑得更快

头条要闻

四川宜宾市高县发生5.5级地震 震中距宜宾28公里

头条要闻

四川宜宾市高县发生5.5级地震 震中距宜宾28公里

体育要闻

两周飞5万公里!因凡蒂诺遭环保人士猛批

娱乐要闻

曾沛慈拿下《乘风2026》年度总冠军

财经要闻

省钱,我只服梁文锋

汽车要闻

搭载华为乾崑六件套 东风奕派M8预售19.98万起

态度原创

家居
数码
艺术
本地
公开课

家居要闻

绿意盎然 自然之境

数码要闻

古尔曼:预计苹果今年发布搭载M5 Ultra芯片的Mac Studio

艺术要闻

她不用笔,她用刀

本地新闻

世界杯球迷节:比球赛更好玩的派对

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版