数据治理之定时调度和血缘关系

SpringBoot定时调度

  1. 在applicaiton类上加注解@EnableScheuling
  2. 创建调度包scheduler
  3. 创建一个考评类调度类AssessScheduler
  4. 创建exec()方法,添加注解@Scheduled(cron=“******”)
    • 分表代表秒,分,时,日,月,星期
    • 0/5,*****, 代表每5秒执行一次

调度工具

  1. 大数据:oozie, Azkaban, 任务众多,流程复杂,配置复杂
  2. java: quartz , xxl-job, elastic-job, 流程简单,分布式,高可用,配置较为复杂
  3. springtask,不支持复杂的流程,也不支持分布式,配置非常简单

血缘关系

  1. 通过双向树形图,来展示表与表之间的关系
  2. 提取关系,每个表的上游source_table, 每个表的下游sink_table
  3. 提取表的元数据 + 当天任务实例的sql
  4. 解析SQL,提取来源表(调用SQL工具,制作一个节点处理器,目的就是提取来源表),得到key-value结构,Key是目标表,value是source表集合。
    • 使用语法树来提取来源表,会查询到真实表和子查询表,需要将子查询表去掉,只保留真实表。
    • 将库名.表名加入到来源表set中,需要对带库名和不带库名两种情况都做处理
  5. 保存数据到血缘关系表中

展示血缘图

方案1:把数据写出来,用Java递归实现组装左右树结构
方案2:利用图数据库neo4j, 存储两个节点之间的关系,可以通过语法直接提取某个节点与其他所有父子多层级的关系
方案3:每次只展开一层,用户点击时再查询下一层的节点

总结

为什么要做这个项目

  1. 明确没有这个项目之前,痛点在哪里

    • 规范
      • 不规范
      • 不易理解
      • 不易变更扩展
    • 存储
      • 冗余:磁盘,内存
    • 计算
      • 冗余:内存,cpu
      • 不够优化:数据倾斜,sql
    • 质量
      • 不按时
      • 不按量
    • 安全: 不安全
  2. 数据治理考评平台:通过… 利用… 实现了…最终…

    • 通过:规划定义了各种数据治理指标项,从Hive, hdfs, ds日志提取各种数据源,实现了针对各个表和指标的考评
    • 利用:各个指标的评分排行和问题描述等方式,倒逼开发人员对数据治理不断改进
    • 最终: 让程序员发现数仓现有的问题,找到优化方向
  3. 如何实现的?

    • 整体架构图
    • 开发平台流程图
    • 技术清单:springboot + mybatis-plus + hive + hdfs + dolphinscheduler
    • 两个引擎:
      • 批处理:spring task
      • 即席处理:
    • 5个治理类型 + 17个指标 (全文背诵)
      • 每个指标如何实现的
  4. 新学的技术框架:

    • springboot

你可能感兴趣的:(大数据,spring,boot,java)