从0到1介绍一下开源大数据比对平台dataCompare

news2025/1/23 3:24:36

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

javaee之Mybatis4

延迟加载与立即加载的概念 Mybatis中的延迟加载与立即加载 一、一对一实现延迟加载的步骤(多对一,看成一对一) 我们这里是利用account表中的一个方法来做 先来看IAccountDao里面的一个方法 然后再去看持久层IAccountDao.xml 这个方法给我们…

Linux学习-92-SELinux管理

18 SELinux管理 root 用户在 Linux 系统当中就是无所不能的,而且读、写和执行权限对 root 用户完全没有作用。root 用户的存在极大地方便了 Linux 的管理,但是也造成了一定的安全隐患。绝大多数系统的严重错误都是由于 root 用户的误操作引起的&#xff…

开源项目 Spartacus 的 git 分支使用规范

Spartacus 开源项目里存在如下的 git 分支: feature/GH-xxxx 分支用于简单的功能和错误修复epic/epic-name 分支用于大功能的开发release/1.4.0-rc.0 分支用于特定的发布(你可以将它们与维护分支区分开来,因为包含了完整的版本号&#xff09…

压力测试笔记

压测学习 要求:满足100并发500ms性能要求 压测场景 新系统上线支持 在新系统上线前,通过执行性能压测能够对系统的负载能力有较为清晰的认知,从而结合预估的潜在用户数量保障系统上线后的用户体验。技术升级验证 在系统重构过程中&#xf…

Github每日精选(第80期):自动生成命令行python-fire

Python Fire 是一个用于从绝对任何Python对象自动生成命令行界面 (CLI) 的库。 Python Fire 是一种在 Python 中创建 CLI 的简单方法。 [1]Python Fire 是用于开发和调试 Python 代码的有用工具。 [2]Python Fire 有助于探索现有代码或将其他人的代码转换为 CLI。[3]Python Fi…

Co-Scale Conv-Attentional Image Transformers

Co-Scale Conv-Attentional Image Transformers一、引言二、实现方法(一)、Conv-Attention Module三、Co-Scale Conv-Attentional Transformers(一)、Co-Scale串行块(二)、Co-Scale并行块(三&am…

跳频和扩频通信

跳频(FH, Frequency Hopping)是指载波频率在很宽频率范围内按某种序列或图案进行跳变,它能进一步提高系统的抗干扰性能。 跳频技术改善了无线信号的传输质量,可以明显地降低同频干扰和频率选择性衰落,为了避免在同一小区或临近小区中&#xf…

无惧管控放开,分享居家办公、远程办公项目经验

国家已经放开疫情管控,随之而来的,是各地大面积的“小阳人”爆发,很多企业不得不重新启动远程办公机制。 云盒子科技拥有良好的的远程办公经验,产品是包含企业云盘、流程审批、邮件、通讯录、企业公告一体化的在线文档协作平台。…

Ubuntu18.04下调用fastdds实现通信

提纲 1、编写idl 2、fastddsgen生成cpp的源代码文件 3、编译生成可执行文件 4、执行可执行文件完成通讯 1、编写idl 现在我们可以编写一个简单的 IDL: 2、fastddsgen生成cpp的源代码文件 编写好idl后,就可以通过 fastddsgen 快速生成代码。 最终会自动…

【Vsan数据恢复】Vsan分布式文件系统数据丢失的数据恢复

vSAN存储数据恢复环境: 某公司一台vSAN分布式文件系统存储设备; VSAN存储采用了超融合架构,存储内总共有24块硬盘。 vSAN存储故障&初检: 由于未知原因关机重启,逻辑架构出现严重故障,上层虚拟机瘫痪&am…

新冠确诊阳性后的第一篇博客,一文带你学习SQL注入

新冠确诊阳性后的第一篇博客,一文带你学习SQL注入1.你好SQL注入2.盲注3.Timing Attack4.常见的攻击技巧5.SQL CoIumn Truncation6.防御SQL注入SQL注入防御的误区使用预编译语句使用存储过程SQL注入攻击属于注入攻击的一种,注入攻击的本质,是把…

echarts3D柱状图,多个柱子,单个柱子,传参即可

<template><!-- 折线图 --><div ref"line" class"line"></div> </template><script> // colorList 横条颜色数组 // data 数据 格式为&#xff1a; [] // areaStyle 渐变色 import * as echarts from echarts import…

AOT(超前编译)实例分析

文章目录一、背景二、具体实施2.1 tfcomfile 是什么&#xff1f;2.2 tfcompile 的功能是什么&#xff1f;2.3使用tfcompile三、总结一、背景 前边已经了解了JIT和AOT的基本概念&#xff0c;AOT(提前编译)方式就是在代码执行阶段之前全部编译成目标指令&#xff0c;进入执行阶段…

自动网络搜索NAS之FBNetV1

1. 摘要 为移动设备设计卷积网络挑战巨大&#xff0c;因为设计空间巨大&#xff0c;现有NAS方法在计算上是昂贵的。另外&#xff0c;之前的工作关注降低FLOPs&#xff0c;但是FLOPs并不总是反应真实的延迟。因此基于differentiable neural architecture search&#xff08;DNA…

sd卡怎么格式化?5个步骤轻松教会你

随着SD卡的广泛使用&#xff0c;总会有各种情况导致SD卡必须要格式化才行。但是格式化有没有办法执行&#xff0c;sd卡怎么格式化&#xff1f;还有人会因为误操作导致的数据丢失。现在&#xff0c;小编就给大家介绍一下怎么格式化SD卡&#xff1f;以及格式化后SD卡数据的恢复方…

VUE3-模板语法《二》

首先看到这张图&#xff0c;左边的结构就不分析了&#xff0c;上一章有说明顺序。 中间红色的部分&#xff0c;分为3块&#xff0c;第一块是模板&#xff0c;里面写html&#xff1b;第二块是脚本语言&#xff0c;里面写js或者ts语言&#xff0c;lang"ts"就是ts语法…

GreatSQL MGR 使用 IPv6 连接

GreatSQL社区原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本&#xff0c;使用上与MySQL一致。作者&#xff1a;王权富贵文章来源&#xff1a;社区原创 1.概述 本文基于 GreatSQL 8.0.25-16 &#xff0c;以下测试均使用此版…

嵌入式:Load/Store之单寄存器的存取指令

文章目录Load/Store指令分类单寄存器的存取指令1、单字和无符号字节的数据传送指令指令说明指令汇编格式2、半字和有符号字节的数据传送指令指令汇编格式ARM处理器是Load/Store型的&#xff0c;即它对数据的操作是通过将数据从存储器加载到片内寄存器中进行处理&#xff0c;处理…

SuperMap iPortal 对接postgis业务数据库(二):大屏使用接口数据更新图表和地图

本文是SuperMap iPortal 对接postgis业务数据库的第二个步骤&#xff1a;大屏使用接口数据更新图表和地图。 这个步骤可以有两种方式去实现数据的展示和更新如下&#xff1a; 一、使用数据上图构建地图并在大屏中使用 1. 数据上图构建地图 打开iPortal 应用中心的数据上图&a…

教你如何轻松搞定云上打印管理

摘要&#xff1a;加快自主创新&#xff0c;满足数字化用户多场景文印需求。本文分享自华为云社区《有了司印云打印&#xff0c;云上打印管理轻松搞定&#xff01;》&#xff0c;作者&#xff1a;云商店 。 作为与职场和个人办公息息相关的工作场景&#xff0c;打印长期以来都是…