SpringBoot定时调度
- 在applicaiton类上加注解@EnableScheuling
- 创建调度包scheduler
- 创建一个考评类调度类AssessScheduler
- 创建exec()方法,添加注解@Scheduled(cron=“******”)
- 分表代表秒,分,时,日,月,星期
- 0/5,*****, 代表每5秒执行一次
调度工具
- 大数据:oozie, Azkaban, 任务众多,流程复杂,配置复杂
- java: quartz , xxl-job, elastic-job, 流程简单,分布式,高可用,配置较为复杂
- springtask,不支持复杂的流程,也不支持分布式,配置非常简单
血缘关系
- 通过双向树形图,来展示表与表之间的关系
- 提取关系,每个表的上游source_table, 每个表的下游sink_table
- 提取表的元数据 + 当天任务实例的sql
- 解析SQL,提取来源表(调用SQL工具,制作一个节点处理器,目的就是提取来源表),得到key-value结构,Key是目标表,value是source表集合。
- 使用语法树来提取来源表,会查询到真实表和子查询表,需要将子查询表去掉,只保留真实表。
- 将库名.表名加入到来源表set中,需要对带库名和不带库名两种情况都做处理
- 保存数据到血缘关系表中
展示血缘图
方案1:把数据写出来,用Java递归实现组装左右树结构
方案2:利用图数据库neo4j, 存储两个节点之间的关系,可以通过语法直接提取某个节点与其他所有父子多层级的关系
方案3:每次只展开一层,用户点击时再查询下一层的节点
总结
为什么要做这个项目
-
明确没有这个项目之前,痛点在哪里
- 规范
- 不规范
- 不易理解
- 不易变更扩展
- 存储
- 冗余:磁盘,内存
- 计算
- 冗余:内存,cpu
- 不够优化:数据倾斜,sql
- 质量
- 不按时
- 不按量
- 安全: 不安全
- 规范
-
数据治理考评平台:通过… 利用… 实现了…最终…
- 通过:规划定义了各种数据治理指标项,从Hive, hdfs, ds日志提取各种数据源,实现了针对各个表和指标的考评
- 利用:各个指标的评分排行和问题描述等方式,倒逼开发人员对数据治理不断改进
- 最终: 让程序员发现数仓现有的问题,找到优化方向
-
如何实现的?
- 整体架构图
- 开发平台流程图
- 技术清单:springboot + mybatis-plus + hive + hdfs + dolphinscheduler
- 两个引擎:
- 批处理:spring task
- 即席处理:
- 5个治理类型 + 17个指标 (全文背诵)
- 每个指标如何实现的
-
新学的技术框架:
- springboot