CN114461723A - 一种基于Spark计算引擎的数据差异比较方法及装置 - Google Patents
一种基于Spark计算引擎的数据差异比较方法及装置 Download PDFInfo
- Publication number
- CN114461723A CN114461723A CN202111562972.6A CN202111562972A CN114461723A CN 114461723 A CN114461723 A CN 114461723A CN 202111562972 A CN202111562972 A CN 202111562972A CN 114461723 A CN114461723 A CN 114461723A
- Authority
- CN
- China
- Prior art keywords
- data
- difference
- comparison
- calculation engine
- compared
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于Spark计算引擎的数据差异比较方法及装置,其中,该方法包括:通过数据加载器加载指定的数据,并对数据做预分区处理;通过数据封装器对数据需要比较的字段做封装处理;封装后的数据由数据差异生成器进行比较,并将差异结果导出到指定的表或文件。该方法及装置实现业务逻辑调整前后的数据快速、全面比对,降低数据同步、数据迁移及数据模型逻辑调整后的未知风险。
Description
技术领域
本发明涉及大数据数据仓领域,尤其是一种基于Spark计算引擎的数据差异比较方法及装置,用于日常数仓需求发布后验证数据同步及数据迁移结果的正确性。
背景技术
在大数据背景下的ETL(将业务系统的数据经过抽取及清洗转换之后加载到数据仓库的过程)日常开发中,不同数据源之间的数据同步、数据迁移及数据模型逻辑调整,经常导致数据与原有数据存在差异,对于每次的生产调整,都需要进行严格的测试,很多时候测试都会需要很长的时间。目前,在开发过程中常用的测试方法有:数据量统计、字段值测试、数据抽样测试以及测试用例测试等。但都不能准确的定位问题记录行,同时消耗大量人力和时间成本。
发明内容
为了解决目前数据测试手段很难覆盖到逻辑修改调整前后的所有场景,并且基于大数据的查询比较慢,本发明提供一种基于Spark计算引擎的数据差异比较方法及装置,实现业务逻辑调整前后的数据快速、全面比对,降低数据同步、数据迁移及数据模型逻辑调整后的未知风险。
为实现上述目的,本发明采用下述技术方案:
在本发明一实施例中,提出了一种基于Spark计算引擎的数据差异比较方法,该方法包括:
通过数据加载器加载指定的数据,并对数据做预分区处理;
通过数据封装器对数据需要比较的字段做封装处理;
封装后的数据由数据差异生成器进行比较,并将差异结果导出到指定的表或文件。
进一步地,通过数据加载器加载指定的数据,并对数据做预分区处理,包括:
数据加载器根据输入配置的数据源信息,使用Spark计算引擎的DataSource能力,加载不同数据源的同构或异构数据源表或结构化文件数据;
根据指定的字段做分区处理,生成临时视图一用于数据封装。
进一步地,通过数据封装器对数据需要比较的字段做封装处理,包括:
通过数据封装器将上述生成的临时视图一,通过比较基本维度做全连接查询;
对需要比较的字段做相同顺序的封装处理;
最终生成的字段集包含比较基本维度字段、比较维度字段a、比较维度字段b和重复次数四个字段,并在内存中创建临时视图二用于差异比较。
进一步地,封装后的数据由数据差异生成器进行比较,并将差异结果导出到指定的表或文件,包括:
通过数据差异生成器对上述生成的临时视图二做差异比较;
比较方法:a不等于b为差异数据;a不等于null,b等于null为b的缺少数据或a的多出数据;重复次数大于1为重复数据;
最后解封比较后的数据存入指定的差异表或文件。
在本发明一实施例中,还提出了一种基于Spark计算引擎的数据差异比较装置,该装置包括:
数据加载器,用于加载指定的数据,并对数据做预分区处理;
数据封装器,用于对数据需要比较的字段做封装处理;
数据差异生成器,用于将封装后的数据进行比较,并将差异结果导出到指定的表或文件。
进一步地,数据加载器,具体用于:
数据加载器根据输入配置的数据源信息,使用Spark计算引擎的DataSource能力,加载不同数据源的同构或异构数据源表或结构化文件数据;
根据指定的字段做分区处理,生成临时视图一用于数据封装。
进一步地,数据封装器,具体用于:
通过数据封装器将上述生成的临时视图一,通过比较基本维度做全连接查询;
对需要比较的字段做相同顺序的封装处理;
最终生成的字段集包含比较基本维度字段、比较维度字段a、比较维度字段b和重复次数四个字段,并在内存中创建临时视图二用于差异比较。
进一步地,数据差异生成器,具体用于:
通过数据差异生成器对上述生成的临时视图二做差异比较;
比较方法:a不等于b为差异数据;a不等于null,b等于null为b的缺少数据或a的多出数据;重复次数大于1为重复数据;
最后解封比较后的数据存入指定的差异表或文件。
在本发明一实施例中,还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现前述基于Spark计算引擎的数据差异比较方法。
在本发明一实施例中,还提出了一种计算机可读存储介质,计算机可读存储介质存储有执行基于Spark计算引擎的数据差异比较方法的计算机程序。
有益效果:
与现有技术相比较,本发明在异构数据源就比较场景下,原本需要针对编写不同数据源程序进行比较,工作量大,易出错,现在只需要传入配置参数即可进行比较;在大数据数仓比较场景下,原本需要对数据进行逐行每个字段的sql编写比较,可能要消耗几个小时以上的时间,现在只需要十几分钟即可完成比较,对日常的工作效率有10几倍的提升。
附图说明
图1是本发明基于Spark计算引擎的数据差异比较方法架构图;
图2是本发明一实施例的基于Spark计算引擎的数据差异比较方法流程示意图;
图3是本发明基于Spark计算引擎的数据差异比较装置结构示意图;
图4是本发明计算机设备结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神,应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种基于Spark计算引擎的数据差异比较方法及装置,使用现有Spark计算引擎的DataSource能力(即DataSource API,是Spark计算引擎提供的一套从存储系统进行读写的相关API接口),连接读取不同数据源的同构或异构数据源表或结构化文件,根据输入配置导出差异数据,包括:different(差异数据)、over(多出数据)、lack(缺少数据)和duplicate(重复数据)。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
图1是本发明基于Spark计算引擎的数据差异比较方法架构图。如图1所示,涉及的组件有:数据加载器、数据封装器和数据差异生成器。在图1中,数据加载器负责加载指定的数据,并对数据做预分区处理,能够加载不同数据源的同构或异构数据源表或结构化文件数据,经过数据封装器对数据需要比较的字段做封装处理,最后封装后的数据由数据差异生成器进行比较,并将差异结果导出到指定的表或文件。具体的流程如下:
步骤一:数据加载器根据输入用户配置的数据源信息,使用Spark计算引擎的DataSource能力,加载数据源A和数据源B,并根据用户指定的字段做分区处理(一般大数据量的表需要分区,参数包括:columnName:String、lowerBound:Long、upperBound:Long、numPartitions:Int,其中columnName是用于分区的字段,就是在切割分区时,按照什么字段的取值来作为分区的依据,lowerBound是分区字段取值的下限(范围包含),upperBound是分区字段取值的下限(范围不包含),numPatitions是希望的分区数;根据数据源信息参数传入,调用spark计算引擎的DataSource能力即datasource API去取数据,Spark计算引擎会根据参数进行分区),生成临时视图一用于数据封装。
步骤二:数据封装器将步骤一生成的临时视图一,根据比较基本维度(基本维度类似主键的字段,能确定一条数据的唯一性,比较的两张表需要根据这样的一个或多个字段进行关联,不参与比较)做全连接FULL JOIN查询(全连接查询是将返回两个表的所有行,同时将各个表中不匹配的数据与空数据匹配进行显示,可以看成是左外连接与右外连接的并集),并对需要比较的字段做相同顺序的封装处理,最终生成的字段集包含比较基本维度字段dim、比较维度字段a和比较维度字段b和重复次数cnt四个字段,并在内存中创建临时视图二用于差异比较。
步骤三:数据差异生成器对步骤二生成的临时视图二做差异比较,比较方法:a不等于b为different(差异数据);a不等于null,b等于null为b的lack(缺少数据)或a的over(多出数据);根据重复次数cnt大于1的为duplicate(重复数据),最后解封比较后的数据存入指定的差异表或文件。
需要说明的是,尽管在上述实施例及附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
为了对上述基于Spark计算引擎的数据差异比较方法进行更为清楚的解释,下面结合一个具体的实施例来进行说明,然而值得注意的是该实施例仅是为了更好地说明本发明,并不构成对本发明不当的限定。
实施例:
图2是本发明一实施例的基于Spark计算引擎的数据差异比较方法流程示意图。具体流程如下:
1、用户填写配置文件,包括:数据源信息、比较基本维度、比较维度(用于差异比较的字段)和差异结果存储地址,多个字段之间逗号隔开;执行本程序入口文件,启动比较分析程序。
2、程序启动后,数据加载器根据配置文件将数据源A表和数据源B表中数据加载到内存中,生成临时视图一:A表数据视图和B表数据视图,交由数据封装器进行比较字段的封装处理。
3、数据封装器读取临时视图,根据比较基本维度作为连接条件做全连接FULLJOIN查询,判断比较基本维度取值,如果A表不为空,则取A表值,否则取B表值,if(A!=null,A,B);并使用concat(字符串链接函数)对比较字段做封装处理,将全部的比较字段封装为一个字段集;使用count窗口函数(现有SQL中一类特别的函数,spark计算引擎中sparkSQL支持使用)计算行记录重复次数cnt;现在字段集包含比较基本维度字段dim、A表比较维度字段a,B表比较维度字段b和重复次数cnt,生成临时视图二。
4、数据差异生成器根据数据封装器生成的临时视图二做多维度比较分析,比较方法:a不等于b为different(差异数据);a不等于null,b等于null为b的lack(缺少数据)或a的over(多出数据);根据全部字段分组计数值大于1为duplicate(重复数据),即根据count窗口函数:count(distict*)over(partition bydim,a,b)计算出行记录重复次数,当大于1,就是重复数据;最后将比较分析出的数据导出到表或文件。
基于同一发明构思,本发明还提出一种基于Spark计算引擎的数据差异比较装置。该装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的术语“模块”,可以是实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图3是本发明基于Spark计算引擎的数据差异比较装置结构示意图。如图3所示,该装置包括:
数据加载器101,用于加载指定的数据,并对数据做预分区处理;具体如下:
数据加载器根据输入配置的数据源信息,使用Spark计算引擎的DataSource能力,加载不同数据源的同构或异构数据源表或结构化文件数据;
根据指定的字段做分区处理,生成临时视图一用于数据封装。
数据封装器102,用于对数据需要比较的字段做封装处理;具体如下:
通过数据封装器将上述生成的临时视图一,通过比较基本维度做全连接查询;
对需要比较的字段做相同顺序的封装处理;
最终生成的字段集包含比较基本维度字段、比较维度字段a、比较维度字段b和重复次数四个字段,并在内存中创建临时视图二用于差异比较。
数据差异生成器103,用于将封装后的数据进行比较,并将差异结果导出到指定的表或文件;具体如下:
通过数据差异生成器对上述生成的临时视图二做差异比较;
比较方法:a不等于b为差异数据;a不等于null,b等于null为b的缺少数据或a的多出数据;重复次数大于1为重复数据;
最后解封比较后的数据存入指定的差异表或文件。
应当注意,尽管在上文详细描述中提及了基于Spark计算引擎的数据差异比较装置的若干模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
基于前述发明构思,如图4所示,本发明还提出一种计算机设备200,包括存储器210、处理器220及存储在存储器210上并可在处理器220上运行的计算机程序230,处理器220执行计算机程序230时实现前述基于Spark计算引擎的数据差异比较方法。
基于前述发明构思,本发明还提出一种计算机可读存储介质,计算机可读存储介质存储有执行前述基于Spark计算引擎的数据差异比较方法的计算机程序。
本发明提出的基于Spark计算引擎的数据差异比较方法及装置,具备以下优点:
1、使用Spark计算引擎的DataSource能力,能够对不同数据源的异构数据进行高效、快速的加载,基于分布式的存储计算,能够支持海量的数据比较,保障了比较结果的准确性,提高了实际应用性。
2、使用特定的字段封装方案,简化了比较过程,并提供了多样化的比较结果,用户只需要指定数据源信息和比较字段配置以及比较结果输出位置,就可以完成比较分析,能够快速的、全面的完成对大数据数据仓库脚本修改前后的数据比对测试工作。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包含的各种修改和等同布置。
对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (10)
1.一种基于Spark计算引擎的数据差异比较方法,其特征在于,该方法包括:
通过数据加载器加载指定的数据,并对数据做预分区处理;
通过数据封装器对数据需要比较的字段做封装处理;
封装后的数据由数据差异生成器进行比较,并将差异结果导出到指定的表或文件。
2.根据权利要求1所述的基于Spark计算引擎的数据差异比较方法,其特征在于,通过数据加载器加载指定的数据,并对数据做预分区处理,包括:
数据加载器根据输入配置的数据源信息,使用Spark计算引擎的DataSource能力,加载不同数据源的同构或异构数据源表或结构化文件数据;
根据指定的字段做分区处理,生成临时视图一用于数据封装。
3.根据权利要求1所述的基于Spark计算引擎的数据差异比较方法,其特征在于,通过数据封装器对数据需要比较的字段做封装处理,包括:
通过数据封装器将上述生成的临时视图一,通过比较基本维度做全连接查询;
对需要比较的字段做相同顺序的封装处理;
最终生成的字段集包含比较基本维度字段、比较维度字段a、比较维度字段b和重复次数四个字段,并在内存中创建临时视图二用于差异比较。
4.根据权利要求1所述的基于Spark计算引擎的数据差异比较方法,其特征在于,封装后的数据由数据差异生成器进行比较,并将差异结果导出到指定的表或文件,包括:
通过数据差异生成器对上述生成的临时视图二做差异比较;
比较方法:a不等于b为差异数据;a不等于null,b等于null为b的缺少数据或a的多出数据;重复次数大于1为重复数据;
最后解封比较后的数据存入指定的差异表或文件。
5.一种基于Spark计算引擎的数据差异比较装置,其特征在于,该装置包括:
数据加载器,用于加载指定的数据,并对数据做预分区处理;
数据封装器,用于对数据需要比较的字段做封装处理;
数据差异生成器,用于将封装后的数据进行比较,并将差异结果导出到指定的表或文件。
6.根据权利要求5所述的基于Spark计算引擎的数据差异比较装置,其特征在于,所述数据加载器,具体用于:
数据加载器根据输入配置的数据源信息,使用Spark计算引擎的DataSource能力,加载不同数据源的同构或异构数据源表或结构化文件数据;
根据指定的字段做分区处理,生成临时视图一用于数据封装。
7.根据权利要求5所述的基于Spark计算引擎的数据差异比较装置,其特征在于,所述数据封装器,具体用于:
通过数据封装器将上述生成的临时视图一,通过比较基本维度做全连接查询;
对需要比较的字段做相同顺序的封装处理;
最终生成的字段集包含比较基本维度字段、比较维度字段a、比较维度字段b和重复次数四个字段,并在内存中创建临时视图二用于差异比较。
8.根据权利要求5所述的基于Spark计算引擎的数据差异比较装置,其特征在于,所述数据差异生成器,具体用于:
通过数据差异生成器对上述生成的临时视图二做差异比较;
比较方法:a不等于b为差异数据;a不等于null,b等于null为b的缺少数据或a的多出数据;重复次数大于1为重复数据;
最后解封比较后的数据存入指定的差异表或文件。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-4任一项所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1-4任一项所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111562972.6A CN114461723A (zh) | 2021-12-20 | 2021-12-20 | 一种基于Spark计算引擎的数据差异比较方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111562972.6A CN114461723A (zh) | 2021-12-20 | 2021-12-20 | 一种基于Spark计算引擎的数据差异比较方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114461723A true CN114461723A (zh) | 2022-05-10 |
Family
ID=81406641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111562972.6A Pending CN114461723A (zh) | 2021-12-20 | 2021-12-20 | 一种基于Spark计算引擎的数据差异比较方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114461723A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578729A (zh) * | 2023-07-13 | 2023-08-11 | 腾讯科技(深圳)有限公司 | 内容搜索方法、装置、电子设备、存储介质和程序产品 |
CN116932575A (zh) * | 2023-09-12 | 2023-10-24 | 长城证券股份有限公司 | 基于Spark的跨数据源操作方法、设备及存储介质 |
-
2021
- 2021-12-20 CN CN202111562972.6A patent/CN114461723A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578729A (zh) * | 2023-07-13 | 2023-08-11 | 腾讯科技(深圳)有限公司 | 内容搜索方法、装置、电子设备、存储介质和程序产品 |
CN116578729B (zh) * | 2023-07-13 | 2023-11-28 | 腾讯科技(深圳)有限公司 | 内容搜索方法、装置、电子设备、存储介质和程序产品 |
CN116932575A (zh) * | 2023-09-12 | 2023-10-24 | 长城证券股份有限公司 | 基于Spark的跨数据源操作方法、设备及存储介质 |
CN116932575B (zh) * | 2023-09-12 | 2023-12-15 | 长城证券股份有限公司 | 基于Spark的跨数据源操作方法、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11475034B2 (en) | Schemaless to relational representation conversion | |
CN111367886B (zh) | 数据库中数据迁移的方法及装置 | |
CN114461723A (zh) | 一种基于Spark计算引擎的数据差异比较方法及装置 | |
CN109918370B (zh) | 一种基于web的可配置表单应用前端的开发方法及系统 | |
CN106777101B (zh) | 数据处理引擎 | |
US10102039B2 (en) | Converting a hybrid flow | |
US9069831B2 (en) | Retrieving data objects | |
CN107844424A (zh) | 基于模型的测试系统及方法 | |
CN109614315B (zh) | 一种数据同步测试用例的自动生成方法及系统 | |
CN111259643B (zh) | 一种生成图形报表的方法及设备 | |
CN112306861A (zh) | 一种基于Unittest和Jenkins工具的接口自动化测试体系及方法 | |
CN107704234A (zh) | 前端工程构建方法、装置、电子设备及可读存储介质 | |
US8775392B1 (en) | Revision control and configuration management | |
CN110795387B (zh) | 一种数据导入方法、数据导出方法、装置及数据处理系统 | |
CN112434087B (zh) | 一种跨系统数据比对方法、装置、电子设备及存储介质 | |
CN113901135B (zh) | 一种跨源异构数据智能可视化分析展示方法和设备 | |
CN114741375A (zh) | 一种多源异构数据库快速自动数据迁移系统及方法 | |
CN111858730A (zh) | 一种图数据库的数据导入导出装置、方法、设备及介质 | |
WO2022217889A1 (zh) | 一种基于c#语言的抓具配置系统、方法、装置和存储介质 | |
CN111966760B (zh) | 基于Hive数据仓库的测试数据生成方法及装置 | |
CN113076300A (zh) | 数据迁移后的数据校验方法及装置 | |
US7885927B2 (en) | Transfer of table instances between databases | |
CN104298603A (zh) | 一种应用系统版本构建的正确性的检查方法 | |
US11663189B1 (en) | Generating relational table structures from NoSQL datastore and migrating data | |
CN110580144A (zh) | 一种通过给页面控件添加查询运算符实现的通用查询方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |