大数据分析——Apache Doris(六十四)

102 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情

需要对监听的源表以及变更字段进行配置,在配置的interval时间窗口内多个源表进行扫描,然后将结果进行merge后生成参数,根据配置的threshold对参数进行拆分后传入多个insert sql中,并在每天凌晨进行T+1的全量聚合,修复微批计算的错误数据。

  • 数据血缘

我们基于拉取Routine Load和Flink数据以及服务上报的方式实现了数据中台完善的数据血缘,供数据开发/数据分析师进行查询。

由于我们的Flink开发模式为提交jar的形式,为了获取到任务的血缘,我们对每个算子的命名进行了格式化封装,血缘服务定时的拉取/v1/jobs/overview数据进行解析,我们将不同算子的格式命名封装为以下几种:

  • Source:sourceTypeName [address] [attr]

  • Sink:sinkTypeName [address] [attr]

通过血缘服务内部的解析后,批量地将血缘数据拆分成了Node与Edge存储到了NebulaGraph中,前台服务进行查询即可获得如下图所示的一条完整血缘:

 

 数据中台2.0架构

基于围绕Doris的系统架构调整,我们完成了数据中台2.0架构

  • 使用网易易数数据运河替换Canal,拥有了更完善的数据订阅监控

  • Flink 计算层引入 Redis/Tidb 来做临时/持久化缓存

  • 复杂业务逻辑拆分至 Grpc 服务,减轻 Flink 中的业务逻辑

  • 数据适配层新增 Restful 服务,实现一些 case by case 的复杂指标获取需求

  • 通过网易易数离线调度跑通了实时到离线的数据同步

  • 新增了数据报表/自助分析系统两个数据出口

 

 Doris带来的收益

  1. 数据导入方式简单,我们针对不同业务场景使用了三种导入方式
  • Routine Load:实时异步数据导入

  • Broker Load:定时同步离线数仓数据,用于查询加速

  • Insert into:定时通过DWD层数仓表生成DWS/ADS层数仓表

2. 数据占用空间降低,由原来Es中的1T左右降低到了200G左右

3. 数仓使用成本降低