跳转至

数据分层治理

这里做数据分层治理,主要是为了统计一些访问指标,如pv、uv、访问来源地址、访问来源渠道等数据

主要分为五层进行处理

  • ODS:原始数据,汇集多个原始未处理的数据。比如埋点日志、业务数据库、队列等,是后续数据仓库加工数据的来源
  • DWD:明细数据层,保持和ODS层一样的数据颗粒度,对ODS数据层做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、脱敏、分流等操作
  • DWM:数据中间层,DWD层的数据基础上对数据做一些轻微的聚合操作,通用的温度进行聚合,减少重复工作(地址位置、设备等轻度关联)
  • DWS:数据服务层,基于DWM上的基础数据,汇总成分析某一个主题域的数据层,该层的数据表会相对较少,一张表会涵盖比较多的业务内容,多数是宽表,用于提供后续的业务实时查询;如果是完全的明细那么查询的压力会非常大
  • ADS:数据应用层,提供给数据产品和数据分析使用的数据,一般会存放在ES、redis、clickhouse。常用的数据报表就是存在这里

在这里使用的是kafka、flink和clickhouse,整体逻辑就是每一层都通过kafka的一个topic存储数据,下一层从kafka中获取数据进行处理

kafka和clickhouse,就不过多赘述,主要用于进行数据的传输和存储

flink则用于对kafka实时传输的数据进行处理,进行数据转换与清洗,同时可以通过滚动窗口(Tumbling Windows)、滑动窗口(Sliding Windows)实现时间维度聚合,如统计十秒内的pv、uv值:

  • 窗口:是流数据的 “时间切片”,将无限流转化为有限数据集,便于批量计算。
  • 开窗:通过代码定义窗口的大小、类型(如滚动窗口)、时间基准(如事件时间)等规则,指定 “如何切分数据”。
  • 将每十秒的数据进行统计插入到clickhouse

对数据进行分组聚合处理后将其插入clickhouse

flink中分组聚合是什么意思?

分组:

分组就是对这所选中进行分组的字段中所有可能的字段做一个笛卡尔积,再根据得到的结果进行逻辑分组

类似于三个字段A,B,C,每个字段下有三种不同的数值,则最后的结果就是3乘3乘3=27种结果,相应的就会有27种逻辑分组

聚合:

聚合就是对每一个逻辑分组下的数据进行处理,如将某一逻辑分组下的pv,uv进行累加就可以得到符合这一条件的pv总量和uv总量