一种数据去重的方法及装置与流程

文档序号:11155394阅读:246来源:国知局
一种数据去重的方法及装置与制造工艺

本发明实施例涉及数据处理技术,尤其涉及一种数据去重的方法及装置。



背景技术:

在当今的大数据时代,随着信息化的发展,用数据说话是很多企业经营者的理念。企业要处理的数据量激增,大数据带来便利的同时,也给技术人员增加了一些负担,在海量的数据中,存在大量的重复数据,造成系统的负载越来越大,数据入库和查询性能随之下降,如何实现对大量重复垃圾数据的删除,减少硬盘的使用率,成为大数据时代亟待解决的难题。



技术实现要素:

本发明提供一种数据去重的方法及装置,以实现对大规模数据的去重,减少硬盘的使用率。

第一方面,本发明实施例提供了一种数据去重的方法,该方法包括:

获取待处理数据的MD5值和对应的数据标识;

将所述MD5值和所述数据标识组成所述待处理数据的键值对;

比对所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值;

如果所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值相同,则删除所述待处理数据,并确定与所述待处理数据重复的已有数据的数据标识。

进一步地,在删除所述待处理数据之后,还包括:

将待处理数据的键值对与所述待处理数据重复的已有数据的键值对保存在重复统计库中。

进一步地,还包括:

如果所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值不同,则将所述待处理数据和对应的数据标识存入数据库;

保存所述待处理数据的键值对到已有数据的键值对中。

进一步地,获取待处理数据的MD5值和对应的数据标识包括:

按行读取待处理数据;

计算所述待处理数据的MD5值;

根据读取时间和/或读取待处理数据时的线程号,生成所述待处理数据的数据标识。

进一步地,计算所述待处理数据的MD5值包括:

如果所述待处理数据中包含预设忽略数据,则将所述待处理数据去除所述预设忽略数据;

计算去除所述预设忽略数据后的待处理数据的MD5值,作为所述待处理数据的MD5值。

第二方面,本发明实施例还提供了一种数据去重的装置,该装置包括:

数据标识获取模块,用于获取待处理数据的MD5值和对应的数据标识;

键值对组成模块,用于将所述MD5值和所述数据标识组成所述待处理数据的键值对;

MD5值比对模块,用于比对所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值;

重复数据确定模块,用于如果所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值相同,则删除所述待处理数据,并确定与所述待处理数据重复的已有数据的数据标识。

进一步地,还包括键值对保存模块,用于在删除所述待处理数据之后,将待处理数据的键值对与所述待处理数据重复的已有数据的键值对保存在重复统计库中。

进一步地,还包括数据存储模块,具体用于:

如果所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值不同,则将所述待处理数据和对应的数据标识存入数据库;

保存所述待处理数据的键值对到已有数据的键值对中。

进一步地,数据标识获取模块包括:

数据读取单元,用于按行读取待处理数据;

MD5值计算单元,用于计算所述待处理数据的MD5值;

数据标识生成单元,用于根据读取时间和/或读取待处理数据时的线程号,生成所述待处理数据的数据标识。

进一步地,MD5值计算单元具体用于:

如果所述待处理数据中包含预设忽略数据,则将所述待处理数据去除所述预设忽略数据;

计算去除所述预设忽略数据后的待处理数据的MD5值,作为所述待处理数据的MD5值。

本实施例的技术方案,通过将待处理数据的MD5值和数据标识组成键值对,并比对待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值,将与已有数据的MD5值相同的待处理数据删除,解决了海量数据中存在重复数据的问题,达到了在入库之前对数据进行去重的效果,减少硬盘的使用率,降低成本。

附图说明

图1为本发明实施例一提供的一种数据去重的方法的流程图;

图2是本发明实施例二提供的一种数据去重的方法的流程图;

图3为本发明实施例提供的一种数据去重方法中的数据处理系统的整体框架图;

图4是本发明实施例三提供的一种数据去重的方法的流程图;

图5是本发明实施例四提供的一种数据去重的方法的流程图;

图6是本发明实施例五提供的一种数据去重的装置示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种数据去重的方法的流程图,本实施例可适用于对海量数据进行有效去重的情况,该方法可以由数据去重的装置来执行,该方法具体包括如下步骤:

S110、获取待处理数据的MD5值和对应的数据标识。

其中,MD5(Message-Digest Algorithm 5,信息-摘要算法5),用于确保信息传输完整一致,是计算机广泛使用的杂凑算法之一,具有压缩性、容易计算、抗修改性以及强抗碰撞等特点。待处理数据的类型可以是文本类型,可以按行或按列等方式读取数据并计算数据对应的MD5值,数据标识可以作为每条数据的标记,用于区分每条数据。

S120、将所述MD5值和所述数据标识组成所述待处理数据的键值对。

其中,可将MD5值存放在redis集群上,采用redis集群的好处是redis数据库上存储的数据一般都是键值对的方式,可以实现高效率的比对操作。可以将MD5值和数据标识组成键值对,存储在redis集群数据库中。一般重复处理数据都是利用一种分布式系统基础架构Hadoop的分布式文件系统(Hadoop Distributed File System,HDFS),这样可以有效地实现海量数据存储,同时有效防止单点故障,避免不必要的损失。但是,在HDFS上进行数据去重时,数据就会提前存入硬盘中,导致数据已经入库,浪费硬盘资源,增加硬件成本,消耗大量的时间,在redis数据库中进行去重可以实现在数据入库之前就有效地把大量重复垃圾数据删除,减少硬盘的使用率,降低成本。

S130、比对所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值。

其中,已有数据可以是已经进行存储的数据。

将待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值进行对比,判断待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值是否相同。通过不断比对操作,删除垃圾重复数据。

S140、如果所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值相同,则删除所述待处理数据,并确定与所述待处理数据重复的已有数据的数据标识。

如果待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值相同,则可以认为两条数据互相重复,因此将待处理数据进行删除,同时确定与待处理数据重复的已有数据的数据标识,以确定与待处理数据重复的已有数据。

上述步骤即S110、S120、S130和S140可以由一个硬件设备执行,也可以由不同的硬件设备分别执行,具体执行的设备这里不做限定。

本实施例的技术方案,通过将待处理数据的MD5值和数据标识组成键值对,并比对待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值,将与已有数据的MD5值相同的待处理数据删除,解决了海量数据中存在重复数据的问题,达到了在入库之前对数据进行去重的效果,减少硬盘的使用率,降低成本。

在上述技术方案的基础上,在删除所述待处理数据之后,还优选包括:

将待处理数据的键值对与所述待处理数据重复的已有数据的键值对保存在重复统计库中。

其中,将待处理数据的键值对与所述待处理数据重复的已有数据的键值对保存在重复统计库中,可以利用保存的信息计算出相同MD5值的数据的数据重复量,数据重复量可作为考虑业务需求时的参考因素。

在上述实施例的基础上,还优选包括:

如果所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值不同,则将所述待处理数据和对应的数据标识存入数据库;

保存所述待处理数据的键值对到已有数据的键值对中。

其中,如果待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值不同,则可以确认待处理数据与已有数据之间不存在重复,则将所述待处理数据和对应的数据标识存入数据库即可。同时将待处理数据的键值对保存,作为以后比对的参考依据。将不重复的数据进行存储,保证数据的完整性。

实施例二

图2是本发明实施例二提供的一种数据去重的方法的流程图,本实施例在上述实施例的基础上进行了进一步的优化,将“获取待处理数据的MD5值和对应的数据标识”进一步细化为“按行读取待处理数据;计算所述待处理数据的MD5值;根据读取时间和/或读取待处理数据时的线程号,生成所述待处理数据的数据标识。”该方法具体包括以下步骤:

S210、按行读取待处理数据。

其中,数据在预处理之前可以是数据接入环节,可以通过搬运工具将数据搬运到预处理的服务器当中,等待数据的处理。在预处理服务器中,程序按行读取数据。一般使用的搬运程序都是通过网络传输的,一般采用传输控制协议(Transmission Control Protocol,TCP)通信或者文件传输协议(File Transfer Protocol,FTP)传输。利用预处理程序实现数据的实时接入,提高数据的处理效率。图3为本发明实施例提供的一种数据去重方法中的数据处理系统的整体框架图。如图3所示,数据搬运服务器集群由服务器1-服务器N构成,数据搬运服务器集群310利用搬运程序将数据搬运至预处理服务器集群320中,预处理服务器集群由服务器1'-服务器N'构成,其中预处理程序可以在一台或者多台服务器安装,从而安装了预处理程序的一台或多台服务器组成预处理服务器集群320,计算数据的MD5值并在redis服务器集群330上与已有数据的MD5值进行比对。本发明实施例中的redis服务器集群330由服务器1”-服务器N”等通过快速通信链路连接起来组成的,将不存在重复的数据存入数据库340中,其中数据库340可以是Hbase或Oracle数据库。

S220、计算所述待处理数据的MD5值。

其中,将读取到的每行的待处理数据依次计算MD5值。

S230、根据读取时间和/或读取待处理数据时的线程号,生成所述待处理数据的数据标识。

其中,为待处理数据生成唯一的数据标识,即数据ID。ID可以由待处理数据的读取时间或读取待处理数据时的线程号中的至少一个组成,在由预处理集群读取待处理数据时,ID也可以是预处理集群中的预处理服务器设备号。由于预处理服务器可能是多台,所以为了区分服务器为每一台服务器设置唯一编号,即预处理服务器设备号。

S240、将所述MD5值和所述数据标识组成所述待处理数据的键值对;

S250、比对所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值;

S260、如果所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值相同,则删除所述待处理数据,并确定与所述待处理数据重复的已有数据的数据标识。

本实施例的技术方案,通过按行读取待处理数据,并计算每行数据的MD5值,生成数据标识,将行数据的MD5值与已有数据的MD5值进行比对,当相同时删除待处理数据,解决了海量数据中具有重复数据的问题,达到了在入库之前对海量数据中的重复数据进行去重的效果,减少硬盘的使用率,降低成本。采用将待处理数据按行读取为行数据,利用判断各行数据是否存在重复,将存在重复情况的行数据删除,达到去重操作更加具体化的效果,并且通过按行读取使得数据处理更加快速。

实施例三

图4是本发明实施例三提供的一种数据去重的方法的流程图,本实施例在上述实施例的基础上进行了进一步的优化,将“计算所述待处理数据的MD5值”进一步细化为“如果所述待处理数据中包含预设忽略数据,则将所述待处理数据去除所述预设忽略数据;计算去除所述预设忽略数据后的待处理数据的MD5值,作为所述待处理数据的MD5值。”该方法具体包括以下步骤:

S410、按行读取待处理数据。

S420、如果所述待处理数据中包含预设忽略数据,则将所述待处理数据去除所述预设忽略数据。

其中,在读取待处理数据之前,可以根据实际的需求,将某些数据内容设置为预设忽略数据,例如可以是数据的端口号或者某些不必要的时间信息等,这些都是操作系统随机产生的,对数据本身没有价值可言,因此可以将预设忽略数据相同而其余数据不同的待处理数据认为同一条处理,将其中的一条数据入库,其他进行删除处理,即可实现数据的去重,在计算数据的MD5值之前,去除预设忽略数据,可以起到提高数据去重效果的目的,节省了一部分工作量,节省数据去重时间。

S430、计算去除所述预设忽略数据后的待处理数据的MD5值,作为所述待处理数据的MD5值。

其中,在将预设忽略数据去除后,再计算待处理数据的MD5值。

S440、根据读取时间和/或读取待处理数据时的线程号,生成所述待处理数据的数据标识。

S450、将所述MD5值和所述数据标识组成所述待处理数据的键值对;

S460、比对所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值;

S470、如果所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值相同,则删除所述待处理数据,并确定与所述待处理数据重复的已有数据的数据标识。

本实施例的技术方案,通过在计算数据的MD5值之前增加了忽略数据预判断环节,去除系统随机产生的无效数据部分,达到节省工作量的效果,节省了数据去重时间。

实施例四

图5是本发明实施例四提供的一种数据去重的方法的流程图,本实施例是在上述实施例的基础上的一个优选实例,本方法具体包括以下步骤:

S510、数据搬运服务器集群将待处理数据搬运到预处理服务器。

S520、预处理服务器集群计算待处理数据的MD5值,并获取待处理数据的数据标识,组成键值对,将键值对发送至redis集群。

S530、redis集群将所述键值对中的MD5值与redis数据库已存放的键值对中的MD5值比较,判断是否相同。若相同,则执行S540,否则执行S550。

S540、将重复数据删除。

其中,若待处理数据的MD5值与redis数据库存放的MD5值相同,则说明待处理数据与已有数据重复,则将待处理数据确认为重复数据,将其删除。

S550、确定待处理数据为唯一数据。

其中,若待处理数据的MD5值与redis数据库存放的MD5值不同,则可以认为对于当前待处理数据而言,不存在数据重复的问题,则将待处理数据确定为唯一数据。

S560、将待处理数据入库到HBase或Oracle等数据存储设备,并将待处理数据的键值对存入redis数据库中。

本发明实施例的技术方案,通过多个集群的处理,将待处理数据的MD5值与redis数据库存放的MD5值进行比较,判断数据是否重复,并将重复数据删除,达到了对海量数据的有效去重,提高去重效率。

实施例五

图6是本发明实施例五提供的一种数据去重的装置示意图,该装置包括:

数据标识获取模块610,用于获取待处理数据的MD5值和对应的数据标识;

键值对组成模块620,用于将所述MD5值和所述数据标识组成所述待处理数据的键值对;

MD5值比对模块630,用于比对所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值;

重复数据确定模块640,用于如果所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值相同,则删除所述待处理数据,并确定与所述待处理数据重复的已有数据的数据标识。

进一步地,还包括;

键值对保存模块620,用于在删除所述待处理数据之后,将待处理数据的键值对与所述待处理数据重复的已有数据的键值对保存在重复统计库中。

进一步地,还包括数据存储模块,具体用于:

如果所述待处理数据的键值对中的MD5值和已有数据的键值对中的MD5值不同,则将所述待处理数据和对应的数据标识存入数据库;

保存所述待处理数据的键值对到已有数据的键值对中。

进一步地,数据标识获取模块610包括:

数据读取单元,用于按行读取待处理数据;

MD5值计算单元,用于计算所述待处理数据的MD5值;

数据标识生成单元,用于根据读取时间和/或读取待处理数据时的线程号,生成所述待处理数据的数据标识。

进一步地,MD5值计算单元具体用于:

如果所述待处理数据中包含预设忽略数据,则将所述待处理数据去除所述预设忽略数据;

计算去除所述预设忽略数据后的待处理数据的MD5值,作为所述待处理数据的MD5值。

上述数据去重的装置可执行本发明任意实施例所提供的数据去重的方法,具备执行数据去重的方法相应的功能模块和有益效果。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1