从 0 到 1 介绍一下开源大数据比对平台 dataCompare
1.背景 &现状
在大数据领域也已经工作了多年,无论所待过的大公司还是小公司,都会遇到集群升级迁移过程中据搬迁等相关工作,经常会碰到搬迁之后,搬迁的数据是不是能对的上呢?两边数据究竟是不是一致的呢?如果不一致,那又有哪些差异呢?能不能更快地找到差异解决问题呢?
之前经常每个开发的同学自己写一些 SQL 脚本进行去比对的,而且也没有一个评估标准。这样的话效率比较低下。
其实在《阿里巴巴大数据之路》这本其实有提到这样一个平台,但是由于没有对外使用,所以书中介绍比较简单。因此根据以往的工作经历,开发了一个大数据比对平台,用来辅助验证数据,命名为 dataCompare。
主要解决如下几个问题:
(1)验证数据、数据比对,浪费极大的人力成本,一张表数据从对比数据到找差异数据可能要花 1-2 小时时间,如果再乘以表的数量,时间成本基本上就是 2H*N(N 为表的数量)
(2)没有一套标准,验证的结果难以评估,每个对比的同学对比标准也不支持,有的可能看看数据量对上就行了,但是其实数据并不一定能对的上
(3)经常是写一大段复杂的 SQL,通过查看 SQL 运行的结果来进行判断是否有问题,通常还需要去调试 SQL 保证 SQL 能正常运行
2.目标
为了解决上述问题因此开发了一个大数据对比平台——dataCompare
(1)采用界面交互、勾选的方式或者低代码的方式即可实现自动化数据校验对比,避免复杂 SQL 调试
(2)建立一套统一的数据校验标准,避免不同开发同学选取的标准不一致,比如:量级对比、一致性对比
(3)提升数据团队的验数比对效率,至少提升 50%左右
3.系统核心功能介绍
目前 dataCompare 已经完成了如下功能:
(1)界面级交互数据对比任务配置,低代码少量配置快速生成对比任务
(2)量级对比、一致性对比、自动化差异 case 发现
(3)目前已经支持 MySQL、Hive、Doris 等 JDBC 数据库
对比流程如下:
(1)新建库信息
(2)选择需要对比数据信息
(3)执行对比任务
(4)差异发现
自动筛选出差异 case,便于排查问题
4.系统架构设计
前端主要是针对数据校验对比选择表和字段,生成校验任务。
后端主要是采用 spring boot、Mybatis 将前端的配置数据写入 MySQL 表里,然后启动 MapReduce 或者 Spark 任务来进行校验,目前支持的引擎包括:MapReduce、Spark,数据存储包括:HDFS、Hive 等,后续考虑扩展更多的数据引擎和存储引擎。
5.系统功能演示
(1)主页
(2)数据库配置页
(3)对比信息配置
(4)对比结果展示
(5)差异 case 自动发现
6.后续规划
(1)陌生表数据探测,包括:枚举值探测、范围值探测、主键 hash 探测
(2)对比任务定时自动调度,对比结果报告自动发送至邮箱等多个渠道
(3)异源数据对比,目前本项目已经实现了同源数据对比功能,后续考虑扩展异源项目对比
7.核心代码开源
https://github.com/zhugezifang/dataCompare
https://gitee.com/ZhuGeZiFang/data-compare
版权声明: 本文为 InfoQ 作者【诸葛子房】的原创文章。
原文链接:【http://xie.infoq.cn/article/72b29109bcb8dc1374eef95ac】。文章转载请联系作者。
评论