首页> 中国专利> 基于Hadoop框架的大规模对象识别方法

基于Hadoop框架的大规模对象识别方法

摘要

本发明涉及一种基于Hadoop框架的大规模对象识别方法。该方法包括:步骤10、读入所有预定义的匹配规则;步骤20、输入作为对象描述数据的记录;步骤30、对于每个匹配规则,如果记录具有该匹配规则所需的所有属性,通过Map作业根据该记录输出键值对;步骤40、相同键的键值对通过Reduce作业输出以相应的记录组为值的键值对;步骤50、输出以记录组为值且以该记录组中的记录id分别为键的键值对,对于同一记录id所对应的记录组进行传递闭包处理得到新的记录组;步骤60、反复进行步骤50,直至记录组没有改变。发明基于Hadoop框架的大规模对象识别方法采用大规模并行的策略,解决了面对海量数据的匹配效率问题;通过预定义的匹配规则,规避了数据缺少与错误的问题。

著录项

  • 公开/公告号CN104573095A

    专利类型发明专利

  • 公开/公告日2015-04-29

    原文格式PDF

  • 申请/专利权人 深圳市华傲数据技术有限公司;

    申请/专利号CN201510047750.9

  • 申请日2015-01-30

  • 分类号G06F17/30(20060101);

  • 代理机构深圳市华优知识产权代理事务所(普通合伙);

  • 代理人余薇

  • 地址 518057 广东省深圳市南山区高新区中区高新中一道9号软件大厦7层713、715、716室

  • 入库时间 2023-12-18 08:25:28

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-01-31

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F17/30 专利号:ZL2015100477509 变更事项:专利权人 变更前:深圳市华傲数据技术有限公司 变更后:深圳市华傲数据技术有限公司 变更事项:地址 变更前:518057 广东省深圳市南山区高新区中区高新中一道9号软件大厦7层713、715、716室 变更后:518057 广东省深圳市龙华区民治街道北站社区汇德大厦1号楼2203/2204

    专利权人的姓名或者名称、地址的变更

  • 2018-08-14

    授权

    授权

  • 2015-08-05

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20150130

    实质审查的生效

  • 2015-04-29

    公开

    公开

说明书

技术领域

本发明涉及数据处理技术领域,尤其涉及一种基于Hadoop框架的大规模对象识别方法。

背景技术

网络技术飞速发展的今天,大量网络应用和产品的使用产生了海量的数据,当我们需要对数据进行清洗、集成时,就需要识别出这些数据中哪些记录是描述同一现实对象的。举个例子:各个电商销售商品时通常会记录消费者本身的信息(姓名、性别、年龄、电话、邮箱、住址等)以及商品的信息(如商品名称、类别、单价、数量等),当需要分析消费者的消费行为时,首要的事情时根据记录中消费者的信息来识别哪些记录是隶属于同一现实消费者,而通常不同的电商记录的消费者信息内容会有所不同,或者同一现实消费者在各电商网站注册的信息有差异,部分数据会缺少甚至错误,因此不能通过简单的去重来识别同一消费者。

对象识别又称记录匹配,其目的是从(不可靠的)各种数据源中识别出表示同一现实对象的记录。对象识别在数据清洗、数据集成、数据分析等应用中具有重要作用。在实际应用中,一个对象的信息通常需要与其他数据源的信息进行关联。然而,其他数据源中表示同一对象的信息可能存在错误或具有不同的表示形式。因此,对象识别并不简单,特别是在互联网技术的迅猛发展的今天,数据在急剧膨胀,采用传统的方法从海量数据中识别出哪些对象是相同(或相似的)几乎不可行,相关问题亟需解决。其中包含两个关键问题:一是针对数据缺少与错误的情况如何识别同一对象;二是面对海量的数据如何解决匹配效率问题,传统的策略面对海量数据时已无能为力。

另一方面,Hadoop框架上常使用MapReduce并行处理策略来并行处理大规模的数据集。Hadoop实现了分布式文件系统(Hadoop Distributed File System, 简称HDFS),Hadoop框架最核心的设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。MapReduce是谷歌提出的分布式并行计算框架,一个MapReduce作业分2个步骤:Map(映射)和Reduce(化简)。参见图1,其为举例说明现有技术中Hadoop框架上并行处理MapReduce作业的流程图。Hadoop框架会启动多个节点(根据系统资源和任务等因素)来并行处理MapReduce作业。在Map端Hadoop将输入文件(比如信息记录文件)进行切片,每个切片独立的分给一个节点处理,称为一个Map作业,每个Map作业按顺序接收一组键值对——key1/value1的内容并处理,输出结果为另一组键值对——key2/value2。所有Map作业都结束后系统将会对所有的输出key2/value2按key2进行打乱、排序、分区,并将分区后的结果传送到不同的Reduce端处理。Reduce作业每次处理一个key2以及key2对应的所有value2,并输出一个或多个或零个的键值对——key3/value3。所有Reduce作业处理完成后整个MapReduce作业完成。

发明内容

本发明的目的在于提供一种基于Hadoop框架的大规模对象识别方法,能够提高面对海量数据的匹配效率。

为实现上述目的,本发明提供一种基于Hadoop框架的大规模对象识别方法,包括:

步骤10、读入所有预定义的匹配规则;

步骤20、输入作为对象描述数据的记录,记录的数据格式包括记录id及相应的属性;

步骤30、对于每个匹配规则,如果记录具有该匹配规则所需的所有属性,通过Map作业根据该记录输出键值对,其中,键为该记录的该所有属性的内容,值为该记录的记录id;

步骤40、对于步骤30所输出的键值对,相同键的键值对通过Reduce作业输出以相应的记录id的集合为值的键值对,将该记录id的集合称为记录组;

步骤50、输出以记录组为值且以该记录组中的记录id分别为键的键值对,对于同一记录id所对应的记录组进行传递闭包处理得到新的记录组;

步骤60、反复进行步骤50,直至记录组没有改变。

其中,步骤30还包括:如果记录不匹配任一匹配规则,通过Map作业根据该记录输出防止该记录丢失的键值对,其中,值为该记录的记录id。

其中,步骤50包括:

步骤501、第一Map阶段,对于记录组及其包含的记录id,通过Map作业广播记录id所属的记录组,输出以记录组为值且以该记录组中的记录id分别为键的键值对;

步骤502、第一Reduce阶段,通过Reduce作业处理步骤501输出的键值对;如果记录id同时属于多个记录组,合并该多个记录组成为新的记录组,标记该新的记录组的状态信息为新增,标记该多个记录组的状态信息为删除;如果记录id只属于一个记录组,标记该记录组的状态信息为保留;

步骤503、第二Map阶段,读取步骤502的输出结果,通过Map作业输出以记录组为键并且以该记录组的状态信息为值的键值对;

步骤504、第二Reduce阶段,通过Reduce作业根据每个记录组的状态信息对记录组执行新增、删除或保留操作。

其中,步骤502包括:

如果记录id同时属于多个记录组,将该多个记录组合并去重后生成新的记录组,新的记录组的作为键输出,状态信息新增作为对应的值输出;对每个旧的记录组,该旧的记录组作为键输出,状态信息删除作为对应的值输出;

如果记录id只属于一个记录组,该记录组作为键输出,状态信息保留作为对应的值输出。

其中,步骤504包括:

如果状态信息中含有新增,输出此记录组;

如果状态信息中含有删除,忽略此记录组;

如果状态信息中含有保留,输出此记录组。

其中,步骤60中判断记录组没有改变的条件为记录组的数量保持不变。

其中,步骤60中判断记录组没有改变的条件为没有处于删除状态的记录组出现。

其中,该匹配规则包括:

匹配规则的数据格式包括规则id及待比较的属性列的列表;

该匹配规则的含义为,对于任意两条记录,如果待比较的属性都不为空且相等,则称该两条记录匹配规则成功。

其中,对于多条匹配规则,任意两条记录满足任一条规则即称该两条记录匹配规则成功。

其中,如果第一规则判定第一记录和第二记录为同一对象,第二规则判定该第二记录和第三记录为同一对象,则该第一记录、第二记录和第三记录为同一对象。

综上所述,本发明基于Hadoop框架的大规模对象识别方法采用大规模并行的策略,解决了面对海量数据的匹配效率问题;通过预定义的匹配规则,规避了数据缺少与错误的问题。

附图说明

图1为现有技术中Hadoop框架上并行处理MapReduce作业的流程图;

图2为本发明基于Hadoop框架的大规模对象识别方法一较佳实施例的流程图。

具体实施方式

下面结合附图,通过对本发明的具体实施方式详细描述,将使本发明的技术方案及其有益效果显而易见。

参见图2,其为本发明基于Hadoop框架的大规模对象识别方法一较佳实施例的流程图。该基于Hadoop框架的大规模对象识别方法主要包括:

步骤10、读入所有预定义的匹配规则;

步骤20、输入作为对象描述数据的记录,记录的数据格式包括记录id及相应的属性;

步骤30、对于每个匹配规则,如果记录具有该匹配规则所需的所有属性,通过Map作业根据该记录输出键值对,其中,键为该记录的该所有属性的内容,值为该记录的记录id;

步骤40、对于步骤30所输出的键值对,相同键的键值对通过Reduce作业输出以相应的记录id的集合为值的键值对,将该记录id的集合称为记录组;

步骤50、输出以记录组为值且以该记录组中的记录id分别为键的键值对,对于同一记录id所对应的记录组进行传递闭包处理得到新的记录组;

步骤60、反复进行步骤50,直至记录组没有改变。

针对数据缺少与错误的情况如何识别同一对象的问题,本发明预先制定出几个关键的匹配规则,当两个消费者记录信息满足某一匹配规则时就认为他们是同一消费者,例如,本发明可设定消费者姓名与电话号码相同时就可认为是同一消费者,通过这个方法可以很好的规避数据缺少与错误的问题。为了解决面对海量的数据的匹配效率问题,本发明采用大规模并行的策略,利用多台机器并行处理,具体采用了Hadoop系统,使用了MapReduce并行处理策略。

下面详细介绍本发明的处理细节。

●概念定义

不失一般性,本发明一较佳实施例使用如下通用的对象描述数据格式:

id姓名性别就职企业1王明兴华傲数据

记录——本发明中称一行对象描述数据为一条记录,其中数据第一列“id”为记录的唯一标识,第二列以及随后的列为描述记录的属性。

对象——本发明中称现实中相同的实体为对象。例如,同一消费者、同一某物品等。

一个对象可能存在多条记录信息,也可能只存在一条。例如,某一消费者在不同的电商网站都有消费记录,则会存在多条记录信息;如果只在某一网站有消费,则只会有一条记录信息。

匹配规则——本发明一较佳实施例中定义配规则如下:

规则id:待比较的属性列的列表。

例如:rule1:2,3。

该规则的含义为:任意两条记录r1和r2,如果第二、第三列的属性都不为空且两条记录之间相等,则称记录r1、r2匹配规则成功,即记录r1、r2为同一对象。

对于多条匹配规则,只要记录r1和r2满足任一条规则即称匹配规则成功。

记录匹配的传递性——如果规则a判定记录r1和r2为同一对象,规则b 判定记录r2和r3为同一对象,则有记录r1、r2、r3为同一对象。

●制定匹配规则

对象识别的准备工作为针对不同的业务数据、不同的需求制定合理的匹配规则,例如针对上面消费者的例子,本发明可预先制定如下规则(假设数据中第2列内容为姓名,第3列为电话,第4列为邮箱):

rule1:2,3

rule2:2,4

rule3:3,4

即如果两个消费者姓名和电话相同,或者姓名和邮箱相同,或者电话和邮箱相同即认为这两个消费者为同一消费者。

下面结合图1所示的MapReduce作业的流程图,具体举例说明本发明的详细步骤。

●识别同一对象

制定好匹配规则后,下一步就是利用规则来识别同一对象。本发明采用基于Hadoop框架、MapReduce并行处理算法来应付海量数据。

1.本发明首先进行规则匹配,具体由步骤10、20、30及40执行。首先平行计算出每一个规则能识别出哪些记录是代表同一对象的,通过一个MapReduce过程来实现。不失一般性,本发明假定数据文件存储在文本文件中,一条记录存储为一行,各列数据以逗号分隔。

Map阶段过程包括:

通过步骤10,Map作业在初始化阶段读入所有的匹配规则。

通过步骤20输入作为对象描述数据的记录,记录的数据格式包括记录id及相应的属性。因为输入文件为文本格式,Map作业的输入模式可以采用LineInputFormat,Map作业的每个输入key1为文件偏移量,此值无用,可忽略;value1为文件的一行,也即一条对象记录信息,解析后,可得到记录id,以及各列属性值,例如:

1Attr1Attr2Attr3Attr4

步骤30中,对于每个匹配规则rule,读取规则所包含列的所有内容,如果某列内容为空,则忽略此规则;否则称该条记录匹配规则rule,Map阶段输出的为:key2为规则所包含列的所有内容,并以逗号分割符串联起来;value2为 该记录id。例如,对应上述的记录数据,假设此规则包含2个列,分别为第二列与第四列,则需判断第二列和第四列内容是否为空,如果任一列内容为空,则忽略此规则,进行下一规则判断;此处第二列和第四列内容分别为“Attr1”,“Attr3”,都不为空,因此Map阶段输出Key的内容为“Attr1,Attr3”,value内容为记录id“1”。

此外,步骤30还可以包括:如果该记录不匹配任一规则,则Map阶段需要输出特殊的内容以防止该记录丢失,例如,输出的key2可以为记录的id值,通过记录id与规则所包含的各列属性进行区分,value2也为记录的id值。

Reduce阶段处理过程包括:

在步骤40中,MapReduce框架将把Map阶段的输出中按key2值进行打乱、重分区等处理后,相同key2值及其所有value2将在同一Reduce作业中进行处理,并且每个Reduce过程处理一个key2及其所有value2,此处key2为某个规则对应的所有属性值组,value2为所有包含该属性值组的记录id,也即这些记录表示同一对象,本发明称这些记录id的集合为一个记录组。Reduce作业的输出为这些记录组,其中key3可以忽略不用,value3内容为记录组,记录组的形式可以是:将所有的记录id用逗号串联起来,使用文本的方式,一个记录组保存为一行,如“1,3,4”。

2.传递闭包

通过上述步骤,本发明能够并行计算得到每个匹配规则能识别哪些记录是代表同一对象的,如规则1识别出记录1、3、4为同一对象,规则2识别出2、4为同一对象,通过传递可知道,记录1、2、3、4都表示同一对象,因此需要将规则匹配的结果再处理一下,本发明称此步骤为传递闭包,执行过程参见步骤50和60。因为记录组之间可能存在多次传递,本发明具体采用迭代过程来解决,每次迭代包含2个MapReduce过程,具体可如下步骤501、502、503及504。

步骤501为第一Map阶段,对于记录组及其包含的记录id,通过Map作业广播记录id所属的记录组,输出以记录组为值且以该记录组中的记录id分别为键的键值对。Map作业的输入为步骤40的输出或上一次迭代也就是步骤504的输出,可以采用文本输入格式,每行内容为一个记录组,也就是标示同一对象的记录id列表,Map作业读取这个记录组后,对其中的每个记录id,输出一 组key2/value2:key2为该记录id,value2为记录组。例如记录组为“1,3,4”时将输出3组key2/value2内容,分别为“1”/“1,3,4”、“3”/“1,3,4”以及“4”/“1,3,4”。此过程的目的是广播每个记录id分别属于那些记录组。

步骤502为第一Reduce阶段,通过Reduce作业处理步骤501输出的键值对;如果记录id同时属于多个记录组,合并该多个记录组成为新的记录组,标记该新的记录组的状态信息为新增,标记该多个记录组的状态信息为删除;如果记录id只属于一个记录组,标记该记录组的状态信息为保留。

Map阶段将记录id所属的记录组广播出去,经过MapReduce框架归并后,同一记录id所属的记录组会到同一Reduce作业中处理。如果某记录id同时属于多个记录组,则这些记录组需要合并,生成新的记录组,同时旧记录组需删除;否则,说明该记录id只属于一个记录组,表明该记录组无需更新,需保留。Reduce作业处理、存储每个记录组内容及其状态,具体过程可以如下:

a.如果记录id所属的记录组只有一个,输出结果中key3为记录组,value3为该记录组的状态信息:“保留”。

b.如果记录id所属的记录组有多个:1)将所有记录组合并去重后生成新的记录组,输出:key3为新记录组内容,value3为其状态信息:“新增”;2)对每个旧记录组,输出:key3为记录组内容,value3为状态信息:“删除”。

到此,第一个MapReduce处理过程已结束,结果记录了新增了哪些记录组,删除了哪些记录组,有哪些记录组保持不变。因为记录组的每个记录id都将给该记录组增加一个状态信息,且状态信息可能不一致,如对于记录组“1,3,4”,“1”只属于此记录组,因此它将给该记录组增加状态“保留”,而“4”属于多个记录组,表明“1,3,4”需与其他记录组合并后删除,保留那个新增的记录组,因此它将给该记录组增加状态“删除”。故此需要合并记录组的所有状态信息,并确定记录组的最终状态。依旧采用MapReduce来并行处理。

步骤503为第二Map阶段,读取步骤502的输出结果,通过Map作业输出以记录组为键并且以该记录组的状态信息为值的键值对。

此阶段任务很简单,只是简单的读取上一步的输出结果,并转发出去。即读取的key1为记录组内容,value1为状态信息“新增”、“保留”、或“删除”,输出的key2、value2与key1、value1相同,内容不变。

步骤504为第二Reduce阶段,通过Reduce作业根据每个记录组的状态信 息对记录组执行新增、删除或保留操作。经过MapReduce框架归并后,每个记录组的所有状态信息集中到同一Reduce过程中处理,对一个记录组的所有状态信息,处理过程可具体如下:

a.如果状态中含有“新增”,则说明此记录组为新增,说明此记录组需要输出。输出记录组信息,可以同步骤40输出内容一样,使用文本的方式,一个记录组保存为一行;

b.如果状态中含有“删除”,则说明此记录组信息有更新,无需保留,因此忽略此记录组;

c.否则说明此记录组为“保留”,需要输出,因此输出记录组信息,可以同步骤40输出内容一样,使用文本的方式,一个记录组保存为一行。

第二个MapReduce处理过程结束,我们可解决一次传递的问题,由于结果中可能存在多重传递,因此需要重复上述2个MapReduce过程,直到没有记录组新增或删除为止。例如:第一步可能得到的结果为“1,2”,“2,3”,“3,4”,经分析可得记录“1,2,3,4”都表示同一个对象,而经过一轮闭包计算后得到“1,2,3”和“2,3,4”,需再做一次闭包才得最终的结果“1,2,3,4”。也就是执行步骤60,反复进行步骤50,直至记录组没有改变。步骤60中判断记录组没有改变的条件为记录组的数量保持不变,或者为没有处于删除状态的记录组出现,或者为没有处于新增状态的记录组出现。

至此,本发明基于Hadoop框架的大规模的平行的对象识别方法执行完成。

综上所述,本发明基于Hadoop框架的大规模对象识别方法采用大规模并行的策略,解决了面对海量数据的匹配效率问题;通过预定义的匹配规则,规避了数据缺少与错误的问题;众所周知,数据的价值是1+1>>2的,本发明将原本孤立但却高度相关的数据联系起来,其价值要远大于本身价值之和。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号