实时数据仓库思考总结

前文:

只有核心业务才需要实时,一般有大屏报表/监控,一般只看当天,隔天数据以离线为准;

资源上,一条流就要占用几G数据,通用逻辑使用配置+服用流处理;

管理上,指标更改/质量监控难度大,通过上下游数据量或离线实时数据对比触发告警;

架构上,我们依旧使用Lambda架构;且实时的分层需要将链路尽量短,所以一般就三层,中间层沉淀部分指标,并引入 olap 更新数据/提速查询;

一、业务场景

大屏报表 (流量/订单) + 系统监控;

数据特点: 日志类:数据量大;业务类:多表关联

二、架构

分层作用
ods原始数据
dwd整合明细宽表;输出部分指标流;
ads(olap)1. 存结果表:flink 开窗聚合 2. 存明细数据:使用 olap 的 rollup

总结:

考虑是否使用 olap 聚合数据;

使用 rollup 可以多维分析去重指标,但olap负载加重;

三、相关知识

3.2 双流Join

Window JoinInterval JoinRegular Join
使用coGroup() 或 join() .where().equalTo().keyBy().intervalJoin().between().process()SQL
特点关联不上则丢失; 窗口越大,时效性越差,性能低;需要评估双流延迟上下界情况无界数据:无论是否关联直接下发;后续关联到回撤;
适用窗口内的关联率高的场景;双流相互延迟低且关联性较高(推荐)sink源支持回撤/更新机制

总结:一般基于数据流延迟情况及sink组件选择合适的关联方式。

3.1 维度表Join

预加载维表distributed cache热存储关联广播维表Temporal table function join/Lookup join
使用定时加载数据库数据启动时加载文件异步 IO + Cache 机制
特点实时流实时流
数据量
更新频率定时更新允许维度更新一定延迟无延迟允许维度更新一定延迟
外部存储是(数据库)是(文件)

总结:

维度表数据大时,只能加载一部分数据并设置淘汰机制,导致维度数据必然有一定延迟。

维度表数据小时,可以无延迟。

四、其他

4.1 算子

算子作用
map处理数据
flatmap输出零或若干个指标流
window + reduce聚合累加

4.2 关联

关联
regular join + lookup join拉宽业务明细表
异步 join补充维度表(区域)

4.3 修复

订单宽表:

  1. 使用 doris 的主键模型,可以对订单多次更新;

  2. 设置2个流 (1分钟/5分钟) 更新覆盖

  3. 离线 t+1 天修正最近30天数据,与离线对齐

4.4 监控

对比数据:定时作业查询olap数据与hive数据偏差值过大时触发企微告警;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值