实时数仓分层
建设实时数仓的目的,主要是增加数据计算的复用性。每次新增加统计需求时,不至于从原始数据进行计算,而是从半成品继续加工而成。
每层职能
分层 | 数据描述 | 生成计算工具 | 存储媒介 |
---|---|---|---|
ODS | 原始数据,日志和业务数据 | 日志服务器,maxwell | kafka |
DWD | 根据数据对象为单位进行分流,比如订单、页面访问等等。 | FLINK | kafka |
DWM | 对于部分数据对象进行进一步加工,比如独立访问、跳出行为。依旧是明细数据。 | FLINK | kafka |
DIM | 维度数据 | FLINK | HBase |
DWS | 根据某个维度主题将多个事实数据轻度聚合,形成主题宽表。 | FLINK | Clickhouse |
ADS | 把Clickhouse中的数据根据可视化需要进行筛选聚合。 | Clickhouse SQL | 可视化展示 |
关于将维度表存储到hbase主要是因为kafka中的数据只能顺序读取,无法随机读取,而实时计算场景对数据的要求数据相应要快,而且一般是宽表,显然存储到kafka并不能满足实时计算后期的聚合需求。