一、业务数据表的增加,如何同步增加

 

二、做数仓主要是数据复用

 

三、事实数据和行为数据,放在kafka,维度表放在hbase,dws重难点join

  行为数据,display,page,start,这三类行为日志,分发到不同主题去,通过flink侧输出流,用状态来区分新老用户,

  业务数据,实现动态分流,finkcdc把所有数据写到一个topic,不便于后面使用,需要吧各个表拆开,有些是维度表,有些是事实表,一般吧维度表写到存储容器(hbase,redis,mysql),通过主键查询,一般吧事实表写到流,方便后面形成宽表,而这种配置不合适写在配置文件中,每增加一个表,就需要修改配置信息,重启程序。这里就需要动态配置,一旦表有变化,实时自动感知。

  这里是用mysql数据库存储,周期性同步,或者监控binlog,这种比周期性更好,mysql对配置数据初始化和维护。flinkcdc读取配置信息表,将配置流作为广播与主流进行连接。

  那么配置信息写什么呢?同步到ods_base_db的业务数据,根据配置信息分到不同的表存储到kafka主题。配置流,和主流如何合并,配置流通过广播来连接。来决定主流的数据写到kafka还是hbase

四、写接口可视化。

 

五、业务层dws层的设计

  dwd层明细,维度建模,跟需求没有关系。dws,dwm跟需求有关系,dwt可以根据dws计算。考虑实时计算的指标,跟需求有关系。dwm是计算dws指标复用的中间层

六、指标

  uv计算:

    从kafka主题读取数据,转成jsonObject,根据mid分组,用状态编程过滤,定时器清空状态

  跳出统计:

    跳出的定义,有上一跳,也有下一跳,留存,今天新增了一帮用户,过一段时间,还有多少人在用。看有没有会话ID,没有的话用会话窗口,间隔30s,把窗口数据,迭代数据,

用cep函数begin().next)

  订单指标:订单表,用户表,地区表,订单明细表,商品表,品牌表,类别表,sku表。维度表,存放在hbase,用缓存,phonenix太慢了。异步io,旁路缓存,一部分数据放到redis。

  维度关联:map方法,本身是同步的,数据量很大,并发很高需要用异步,这时候需要增加并行度,带来的是资源的消耗,