还没整理好,别慌。
一,业务问题:
多个表关联join(涉及时间维度跨度很长),几乎等同于全量关联,这个时候flink sql join没法做,因为state会无线增大,然后OOM。
二,解决方案 :
使用doris去做大宽表。
方案1,数据写入ods层,然后sql语句关联定时写入dws层,类似离线批处理。
这种就是替代hive离线计算的方案。
方案2,数据写入大宽表,利用doris特性。
https://cloud.baidu.com/doc/DORIS/s/3kmealtpc
1)创建doris大宽表 -Agg模型
可以尝试自己去创建一个表,相同的主键数据 后者字段值会覆盖前者,而不是想unqi模型一样是相同主键 整行数据替换。
2) 插入对应的数据
id是主键
A流插入 id a
B流插入 id b
C流插入 id c
3)存在的问题,以及怎么解决
1,插入的流数据比如有相同的主键,如果是维表 要在插入之前同步为相同的主键字段
2,联合主键场景
三,flink cdc 写入doris
这个很简单,doris 目前支持flink sql 或者 flink cdc写入 直接调用stream load方式写入doris,官方有包。
四,不是很明白的地方。
主要是解决维表 生成主键的问题。
要先导入明细数据,然后再接入维表数据,维表数据去补全数据,然后再写入,在这个过程中肯定有个延迟。
我画了个图方便理解:
五,补充
Tidb 可以用hbase类似的代替,我也没用过tidb,成本太高。