基于规则算法的数据清洗方法及系统与流程

文档序号:17536032发布日期:2019-04-29 13:59阅读:470来源:国知局
基于规则算法的数据清洗方法及系统与流程

本发明属于计算机技术领域,尤其涉及一种基于规则算法的数据清洗方法及系统。



背景技术:

在信息时代,数据即是资源。数据可靠无误才能准确的反映现实状况,有效的支持组织决策。数据仓库中的数据是从多个业务系统中抽取而来,且包含历史数据和预测数据等多种类型的数据,导致数据仓库中存在错误数据或相互冲突的数据,可称为脏数据。

数据清洗即是指按照一定的清洗规则识别出数据仓库中的脏数据的过程。然而,现有技术中的基于规则算法的数据清洗方法只能清洗出数据中较为明显的脏数据,清洗效果较差。



技术实现要素:

有鉴于此,本发明实施例提供了一种基于规则算法的数据清洗方法及系统,以解决现有技术中数据清洗效果差的问题。

本发明实施例的第一方面提供了一种基于规则算法的数据清洗方法,包括:

客户端通过数据抽取,获得数据库实例;

客户端创建对所述数据库实例的数据清洗任务,并将所述数据库实例的清洗任务进行分解,得到多个子任务;

spark集群的中心管理节点将所述多个子任务分配给多个计算节点,其中,每个计算节点获取一个子任务,任意两个计算节点所获取的子任务不同;

针对任一计算节点,通过预配置的数据清洗规则,对接收到的子任务所对应的数据进行数据清洗,并将清洗后的数据存储至所述分布式结算节点接收到的子任务所对应的数据存储空间中。

本发明实施例的第二方面提供了一种基于规则算法的数据清洗系统,该系统包括客户端,spark集群的中心管理节点和多个计算节点;

所述客户端通过数据抽取,获得数据库实例;

所述客户端创建对所述数据库实例的数据清洗任务,并将所述数据库实例的清洗任务进行分解,得到多个子任务;

spark集群的中心管理节点将所述多个子任务分配给多个计算节点,其中,每个计算节点获取一个子任务,任意两个计算节点所获取的子任务不同;

针对任一计算节点,通过预配置的数据清洗规则,对接收到的子任务所对应的数据进行数据清洗,并将清洗后的数据存储至所述分布式结算节点接收到的子任务所对应的数据存储空间中。

本发明提供了一种基于规则算法的数据清洗方法及系统,本发明提供了一种基于规则算法的数据清洗方法及系统,包括:客户端通过数据抽取,获得数据库实例;客户端创建对所述数据库实例的数据清洗任务,并将所述数据库实例的清洗任务进行分解,得到多个子任务;spark集群的中心管理节点将所述多个子任务分配给多个计算节点,其中,每个计算节点获取一个子任务,任意两个计算节点所获取的子任务不同;针对任一计算节点,通过预配置的数据清洗规则,对接收到的子任务所对应的数据进行数据清洗,并将清洗后的数据存储至所述分布式结算节点接收到的子任务所对应的数据存储空间中。本发明通过分布式计算系统提高了数据清洗效率,且通过规则算法提高了数据清洗的精度。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种基于规则算法的数据清洗方法的流程示意图;

图2为本发明实施例提供的一种基于规则算法的数据清洗系统的结构框图;

图3为本发明实施例提供的一种基于规则算法的数据清洗系统中任一终端设备的示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

本发明实施例提供了一种基于规则算法的数据清洗方法。结合图1,该方法包括:

s101,客户端通过数据抽取,获得数据库实例。

具体的,数据抽取是指从数据源中抽取数据的过程,包括全量抽取和增量抽取。本步骤通过现有的数据抽取技术即可实现,本发明实施例对此不再赘述。

s102,客户端创建对所述数据库实例的数据清洗任务,并将所述数据库实例的清洗任务进行分解,得到多个子任务。

客户端通过数据抽取,得到数据库实例。抽取的数据包含大量脏数据,需要进行数据清洗。

在本发明实施例中,为提高清洗效率,采用分布式计算系统进行并行数据清洗。客户端在本步骤中创建对所述数据库实例的数据清洗任务,根据数据库实例的存储位置和数据大小,将所述数据库实例的清洗任务进行分解,得到多个子任务,由分布式计算系统中的多个计算节点对多个子任务并行处理,从而提高数据清洗效率。

s103,spark集群的中心管理节点将所述多个子任务分配给多个计算节点,其中,每个计算节点获取一个子任务,任意两个计算节点所获取的子任务不同。

在本发明实施例中,采用的分布式计算系统为spark集群,即spark计算系统,spark计算系统中包含两个核心组件,driver节点和worker节点,driver节点负责将用户程序解析为一系列执行单元并发放到worker节点中,并且driver节点负责协调各个worker节点的进程中的任务调度。driver节点为中心管理节点,worker节点为计算节点。

spark集群的中心管理节点将所述多个子任务分配给多个计算节点,其中,每个计算节点获取一个子任务,任意两个计算节点所获取的子任务不同。

为进一步的提高数据清洗效率,所述中心管理节点实时接收与所述中心管理节点连接的所有空闲的计算节点的中央处理器cpu占用率;所述中心管理节点根据所述所有空闲的计算节点的cpu占用率,将所述说个子任务分配给多个计算节点。

具体的,所述多个子任务包含n个子任务,中心管理节点实时接收所有空闲计算节点的cpu占用率,并按照cpu占用率由低到高的顺序进行排序,选取排在前n个的计算节点,将n个子任务分配给n个计算节点,从而使得cpu占用率较低的计算节点优先处理所述n个子任务,进一步提高了数据清洗的效率。

s104,针对任一计算节点,通过预配置的数据清洗规则,对接收到的子任务所对应的数据进行数据清洗,并将清洗后的数据存储至所述分布式结算节点接收到的子任务所对应的数据存储空间中。

具体的,针对任一计算节点,该计算节点通过将预设置的正确值编码在数据清洗规则中,或通过建立外部数据源与所述数据库实例之间的映射关系,获得所述数据清洗规则,其中,所述外部数据源包含主数据和预设知识库。现有的数据质量标准和规范等是构成所述预设知识库的基础。

具体的,数据清洗旨在识别和纠正数据中的噪声,即脏数据,将噪声对数据分析结果的影响降至最低。数据中的噪声主要包括不完整的数据、冗余的数据、冲突的数据和错误的数据,本发明所提供的基于规则算法的数据清洗方法主要用于清洗冗余的数据和错误的数据。

对于清洗冗余数据,本发明实施例提供的清洗方法包括:所述计算节点获取所接收到的子任务所对应的待清洗数据;所述计算节点通过聚类算法对所述待清洗任务进行分组,其中每组数据至少包含两条数据;针对分组后的任一组数据中的一对数据,所述计算节点通过预配置的数据清洗规则,判断所述一对数据是否为冗余数据,其中,所述预配置的数据清洗规则包含多个断言,每个断言对应一个预设相似度函数和一个预设阈值;若所述一对数据满足所述多个断言中的所有断言,则判断所述一对数据为冗余数据,删除所述一对数据中的任一数据。

对于清洗错误数据,本发明实施例提供的清洗方法包括:所述计算节点获取所接收到的子任务所对应的待清洗数据;针对所述待清洗数据中的任一数据,将所述数据与预设主数据进行属性匹配,若所述数据存在至少一个属性与所述主数据所对应的所述至少一个属性的属性值不同,则判断所述数据为错误数据,删除所述数据。

具体的,由数据库实例中的数据构成关系表,通过编辑规则算法在关系表和主数据之间建立匹配关系,若关系表中的属性值与其匹配到的主数据中的属性值不相等,则判断关系表中的数据存在错误。

本发明提供了一种基于规则算法的数据清洗方法,包括:客户端通过数据抽取,获得数据库实例;客户端创建对所述数据库实例的数据清洗任务,并将所述数据库实例的清洗任务进行分解,得到多个子任务;spark集群的中心管理节点将所述多个子任务分配给多个计算节点,其中,每个计算节点获取一个子任务,任意两个计算节点所获取的子任务不同;针对任一计算节点,通过预配置的数据清洗规则,对接收到的子任务所对应的数据进行数据清洗,并将清洗后的数据存储至所述分布式结算节点接收到的子任务所对应的数据存储空间中。本发明通过分布式计算系统提高了数据清洗效率,且通过规则算法提高了数据清洗的精度。

图2为本发明实施例提供的一种基于规则算法的数据清洗系统示意图,结合图2,该系统包括:客户端21,spark集群的中心管理节点22和多个计算节点23;

所述客户端21通过数据抽取,获得数据库实例;

所述客户端21创建对所述数据库实例的数据清洗任务,并将所述数据库实例的清洗任务进行分解,得到多个子任务;

spark集群的中心管理节点22将所述多个子任务分配给多个计算节点23,其中,每个计算节点23获取一个子任务,任意两个计算节点23所获取的子任务不同;

针对任一计算节点23,通过预配置的数据清洗规则,对接收到的子任务所对应的数据进行数据清洗,并将清洗后的数据存储至所述分布式结算节点接收到的子任务所对应的数据存储空间中。

进一步的,所述计算节点23还用于:

通过将预设置的正确值编码在数据清洗规则中,或通过建立外部数据源与所述数据库实例之间的映射关系,获得所述数据清洗规则,其中,所述外部数据源包含主数据和预设知识库。

进一步的,针对任一计算节点23,所述计算节点23用于:

所述计算节点23获取所接收到的子任务所对应的待清洗数据;

所述计算节点23通过聚类算法对所述待清洗任务进行分组;

针对分组后的任一组数据中的一对数据,所述计算节点23通过预配置的数据清洗规则,判断所述一对数据是否为冗余数据,其中,所述预配置的数据清洗规则包含多个断言,每个断言对应一个预设相似度函数和一个预设阈值;

若所述一对数据满足所述多个断言中的所有断言,则判断所述一对数据为冗余数据,删除所述一对数据中的任一数据。

进一步的,针对任一计算节点23,所述计算节点用于:

所述计算节点23获取所接收到的子任务所对应的待清洗数据;

针对所述待清洗数据中的任一数据,将所述数据与预设主数据进行属性匹配,若所述数据存在至少一个属性与所述主数据所对应的所述至少一个属性的属性值不同,则判断所述数据为错误数据,删除所述数据。

进一步的,所述中心管理节点22用于:

所述中心管理节点实时接收与所述中心管理节点22连接的所有空闲的计算节点23的中央处理器cpu占用率;

所述中心管理节点22根据所述所有空闲的计算节点23的cpu占用率,将所述说个子任务分配给多个计算节点23。

本发明提供了一种基于规则算法的数据清洗系统,包括:客户端通过数据抽取,获得数据库实例;客户端创建对所述数据库实例的数据清洗任务,并将所述数据库实例的清洗任务进行分解,得到多个子任务;spark集群的中心管理节点将所述多个子任务分配给多个计算节点,其中,每个计算节点获取一个子任务,任意两个计算节点所获取的子任务不同;针对任一计算节点,通过预配置的数据清洗规则,对接收到的子任务所对应的数据进行数据清洗,并将清洗后的数据存储至所述分布式结算节点接收到的子任务所对应的数据存储空间中。本发明通过分布式计算系统提高了数据清洗效率,且通过规则算法提高了数据清洗的精度。

图3为本发明实施例提供的一种终端设备的示意图。如图3所示,该实施例的终端设备3包括:处理器30、存储器31以及存储在所述存储器31中并可在所述处理器30上运行的计算机程序32,例如基于规则算法的数据清洗程序。所述处理器30执行所述计算机程序32时实现上述各个基于规则算法的数据清洗方法实施例中的步骤,例如图1所示的步骤101至104。

示例性的,所述计算机程序32可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器31中,并由所述处理器30执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序32在所述终端设备3中的执行过程。

所述终端设备3可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器30、存储器31。本领域技术人员可以理解,图3仅仅是终端设备3的示例,并不构成对终端设备3的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。

所述处理器30可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器31可以是所述终端设备3的内部存储单元,例如终端设备3的硬盘或内存。所述存储器31也可以是所述终端设备3的外部存储设备,例如所述终端设备3上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器31还可以既包括所述终端设备3的内部存储单元也包括外部存储设备。所述存储器31用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器31还可以用于暂时地存储已经输出或者将要输出的数据。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述基于规则算法的数据清洗方法的步骤。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使对应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

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