CN104573098B - 基于Spark系统的大规模对象识别方法 - Google Patents
基于Spark系统的大规模对象识别方法 Download PDFInfo
- Publication number
- CN104573098B CN104573098B CN201510047803.7A CN201510047803A CN104573098B CN 104573098 B CN104573098 B CN 104573098B CN 201510047803 A CN201510047803 A CN 201510047803A CN 104573098 B CN104573098 B CN 104573098B
- Authority
- CN
- China
- Prior art keywords
- record
- rule
- data
- extensive
- identifying method
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于Spark系统的大规模对象识别方法。该方法包括:步骤10、读取并解析所有匹配规则;步骤20、读取并解析作为对象描述数据的记录;步骤30、对于每个匹配规则,如果记录具有该匹配规则所需的所有属性,匹配结果为该记录的该所有属性的内容所组成的属性串以及该记录的记录id;步骤40、将相同属性串对应的记录id聚集在一起成为记录id的集合;步骤50、对每个对象所具有的记录id广播其所属的对象,对于同一记录id所对应的对象进行传递闭包处理得到新的对象;步骤60、反复进行步骤50,直至对象的数量没有改变。本发明采用大规模并行的策略,解决了面对海量数据的匹配效率问题;通过预定义的匹配规则,规避了数据缺少与错误的问题。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于Spark系统的大规模对象识别方法。
背景技术
网络技术飞速发展的今天,大量网络应用和产品的使用产生了海量的数据,当我们需要对数据进行清洗、集成时,就需要识别出这些数据中哪些记录是描述同一现实对象的。举个例子:各个电商销售商品时通常会记录消费者本身的信息(姓名、性别、年龄、电话、邮箱、住址等)以及商品的信息(如商品名称、类别、单价、数量等),当需要分析消费者的消费行为时,首要的事情时根据记录中消费者的信息来识别哪些记录是隶属于同一现实消费者,而通常不同的电商记录的消费者信息内容会有所不同,或者同一现实消费者在各电商网站注册的信息有差异,部分数据会缺少甚至错误,因此不能通过简单的去重来识别同一消费者。
对象识别又称记录匹配,其目的是从(不可靠的)各种数据源中识别出表示同一现实对象的记录。对象识别在数据清洗、数据集成、数据分析等应用中具有重要作用。在实际应用中,一个对象的信息通常需要与其他数据源的信息进行关联。然而,其他数据源中表示同一对象的信息可能存在错误或具有不同的表示形式。因此,对象识别并不简单,特别是在互联网技术的迅猛发展的今天,数据在急剧膨胀,采用传统的方法从海量数据中识别出哪些对象是相同(或相似的)几乎不可行,相关问题亟需解决。其中包含两个关键问题:一是针对数据缺少与错误的情况如何识别同一对象;二是面对海量的数据如何解决匹配效率问题,传统的策略面对海量数据时已无能为力。
另一方面,Spark系统是一个开源的通用并行分布式计算框架,由加州大学伯克利分校的AMP实验室开发,适合各种迭代算法和交互式数据分析,能够提升大数据处理的实时性和准确性,现已逐渐获得很多企业的支持。Spark是一种与Hadoop相似的开源集群计算环境,但是Spark启用了内存分布数据集,中间输出结果可以保存在内存中,从而不再需要读写HDFS,缩短访问延迟,除了能够提供交互式查询外,还可以优化迭代工作负载。因此Spark系统能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
发明内容
本发明的目的在于提供一种基于Spark系统的大规模对象识别方法,能够提高面对海量数据的匹配效率。
为实现上述目的,本发明提供一种基于Spark系统的大规模对象识别方法,包括:
步骤10、读取并解析所有匹配规则;
步骤20、读取并解析作为对象描述数据的记录;
步骤30、对于每个匹配规则,如果记录具有该匹配规则所需的所有属性,匹配结果为该记录的该所有属性的内容所组成的属性串以及该记录的记录id;
步骤40、将相同属性串对应的记录id聚集在一起成为记录id的集合,以该记录id的集合标识同一对象;
步骤50、对每个对象所具有的记录id广播其所属的对象,对于同一记录id所对应的对象进行传递闭包处理得到新的对象;
步骤60、反复进行步骤50,直至对象的数量没有改变。
其中,步骤30还包括:如果记录不匹配任一匹配规则,匹配结果包括特殊值和该记录的记录id。
其中,步骤50包括:
步骤501、对每个对象所具有的记录id广播其所属的对象;
步骤502、收集每个记录id所属的对象,如果记录id所属的对象只有一个,则标记对应的对象的状态为保留;否则合并所有对象中的记录id并去重,生成新的对象并标记该新的对象的状态为新增,标记每个旧的对象的状态为删除;
步骤503、合并每个对象的状态信息,如果状态内包含新增,此对象需保留;如果状态内包含删除,此对象需删除;否则,此对象需保留;
步骤504、输出所有需要保留的对象。
其中,该属性串由连接符串联该所有属性的内容组成。
其中,步骤10包括:
读取匹配规则的记录文件;
获取每个规则包含的属性列。
其中,步骤20包括:
Spark系统读取源文件;
解析源文件中的记录数据,以分割符对每行数据进行拆分。
其中,该匹配规则包括:
匹配规则的数据格式包括规则id及待比较的属性列的列表;
该匹配规则的含义为,对于任意两条记录,如果待比较的属性都不为空且相等,则称该两条记录匹配规则成功。
其中,对于多条匹配规则,任意两条记录满足任一条规则即称该两条记录匹配规则成功。
其中,如果第一规则判定第一记录和第二记录为同一对象,第二规则判定该第二记录和第三记录为同一对象,则该第一记录、第二记录和第三记录为同一对象。
综上所述,本发明通过采用大规模并行的策略,解决了面对海量数据的匹配效率问题;通过预定义的匹配规则,规避了数据缺少与错误的问题。
附图说明
图1为本发明基于Spark系统的大规模对象识别方法一较佳实施例的流程图。
具体实施方式
下面结合附图,通过对本发明的具体实施方式详细描述,将使本发明的技术方案及其有益效果显而易见。
针对数据缺少与错误的情况如何识别同一对象的问题,本发明预先制定出几个关键的匹配规则,当两个消费者记录信息满足某一匹配规则时就认为他们是同一消费者,例如,本发明可设定消费者姓名与电话号码相同时就可认为是同一消费者,通过这个方法可以很好的规避数据缺少与错误的问题。为了解决面对海量的数据的匹配效率问题,本发明采用大规模并行的策略,利用多台机器并行处理,具体采用了基于内存计算Spark系统并行处理策略来解决这个问题,处理对象识别比Hadoop框架更快速。
下面详细介绍本发明的处理细节。
●概念定义
不失一般性,本发明一较佳实施例使用如下通用的对象描述数据格式:
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所示的本发明基于Spark系统的大规模对象识别方法一较佳实施例的流程图及伪代码,具体举例说明本发明的详细步骤。
●识别同一对象
制定好匹配规则后,下一步就是利用规则来识别同一对象。本发明采用基于内存计算Spark系统并行处理策略来应付海量数据。
步骤10、读取并解析所有匹配规则。本发明首先处理匹配规则。
先读取匹配规则文件并解析,处理过程如下:
a.读取匹配规则的记录文件:
val ruleData=SparkContex.textFile(“ruleFileName”)
b.解析,忽略规则id,获取每个匹配规则包含的属性列(规则列):
val rules=ruleData.map(_.split(":")(1).split(",").map(_.toInt)).collect()
步骤20、读取并解析作为对象描述数据的记录。接下来处理记录数据。不失一般性,本发明假定数据文件存储在文本文件中,一条记录存储为一行,各列属性以逗号分隔。
a.Spark系统读取源文件:
val orgData=SparkContex.textFile(“dataFileName”)
b.解析源文件中的记录数据,以逗号对每行数据进行拆分:
val recorders=orgData.map(_.split(","))
通过步骤20输入作为对象描述数据的记录,记录的数据格式包括记录id及相应的属性。解析后,可得到记录id,以及各列属性值,例如:
1 | Attr1 | Attr2 | Attr3 | Attr4 |
步骤30、对于每个匹配规则,如果记录具有该匹配规则所需的所有属性,匹配结果为该记录的该所有属性的内容所组成的属性串以及该记录的记录id。步骤30通过使用匹配规则来匹配记录数据来识别对象。首先计算出每一个规则能识别出哪些记录是代表同一对象的。
使用匹配规则匹配数据:
每个规则对每条记录的匹配方法如下:
步骤30中,对于每个匹配规则rule,读取规则所包含列的所有内容,如果某列内容为空,则忽略此规则;否则称该条记录匹配规则rule。例如,对应上述的记录数据,假设此规则包含2个列,分别为第二列与第四列,则需判断第二列和第四列内容是否为空,如果任一列内容为空,则忽略此规则,进行下一规则判断;此处第二列和第四列内容分别为“Attr1”,“Attr3”,都不为空,输出的属性串为“Attr1,Attr3”以及记录id“1”。
此外,步骤30还可以包括:如果该记录不匹配任一规则,则需要输出特殊的内容以防止该记录丢失,例如,输出的属性串可以为记录的id值,通过记录id与规则所包含的各列属性进行区分。
步骤40、将相同属性串对应的记录id聚集在一起成为记录id的集合,以该记录id的集合标识同一对象。使用规则匹配数据后,相同属性串对应的记录为同一对象,因此需将相同属性串对应的记录id聚集在一起,并去重,可得到初步的同一对象结果:
var sameObject=matchData.groupByKey().map(x=>x._2.toSet)
在步骤40中,记录id的集合即对象的形式可以是:将所有的记录id用逗号串联起来,使用文本的方式,一个对象保存为一行,如“1,3,4”。
通过上述步骤,本发明能够并行计算得到每个匹配规则能识别哪些记录是代表同一对象的,如规则1识别出记录1、3、4为同一对象,规则2识别出2、4为同一对象,通过传递可知道,记录1、2、3、4都表示同一对象,因此需要将规则匹配的结果再处理一下,本发明称此步骤为传递闭包,执行过程参见步骤50和60。因为对象之间可能存在多次传递,本发明具体采用迭代过程来解决。
步骤50、对每个对象所具有的记录id广播其所属的对象,对于同一记录id所对应的对象进行传递闭包处理得到新的对象。
具体可以包括:
步骤501、对每个对象所具有的记录id广播其所属的对象;
步骤502、收集每个记录id所属的对象,如果记录id所属的对象只有一个,则标记对应的对象的状态为保留;否则合并所有对象中的记录id并去重,生成新的对象并标记该新的对象的状态为新增,标记每个旧的对象的状态为删除;
步骤503、合并每个对象的状态信息,如果状态内包含新增,此对象需保留;如果状态内包含删除,此对象需删除;否则,此对象需保留;
步骤504、输出所有需要保留的对象。
步骤50的输入为步骤40的输出或上一次迭代也就是步骤504的输出,可以采用文本输入格式,每行内容为一个对象,也就是标识同一对象的记录id的集合。例如对象为“1,3,4”时将输出3组内容,分别为“1”/“1,3,4”、“3”/“1,3,4”以及“4”/“1,3,4”。此过程的目的是广播每个记录id分别属于哪些对象。
因为对象的每个记录id都将给该对象增加一个状态信息,且状态信息可能不一致,如对于对象“1,3,4”,“1”只属于此对象,因此它将给该对象增加状态“保留”,而“4”属于多个对象,表明“1,3,4”需与其他对象合并后删除,保留那个新增的对象,因此它将给该对象增加状态“删除”。故此需要合并对象的所有状态信息,并确定对象的最终状态。例如:第一步可能得到的结果为“1,2”,“2,3”,“3,4”,经分析可得记录“1,2,3,4”都表示同一个对象,而经过一轮传递闭包计算后得到“1,2,3”和“2,3,4”,需再做一次传递闭包才得最终的结果“1,2,3,4”。也就是执行步骤60,反复进行步骤50,直至对象的数量没有改变。
步骤50和60具体如下:
至此,本发明基于Spark系统的大规模对象识别方法执行完成。
综上所述,本发明基于Spark系统的大规模对象识别方法采用大规模并行的策略,解决了面对海量数据的匹配效率问题;通过预定义的匹配规则,规避了数据缺少与错误的问题;众所周知,数据的价值是1+1>>2的,本发明将原本孤立但却高度相关的数据联系起来,其价值要远大于本身价值之和。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于Spark系统的大规模对象识别方法,其特征在于,包括:
步骤10、读取并解析所有匹配规则;
步骤20、读取并解析作为对象描述数据的记录;
步骤30、对于每个匹配规则,如果记录具有该匹配规则所需的所有属性,匹配结果为该记录的该所有属性的内容所组成的属性串以及该记录的记录id;
步骤40、将相同属性串对应的记录id聚集在一起成为记录id的集合,以该记录id的集合标识同一对象;
步骤50、对每个对象所具有的记录id广播其所属的对象,对于同一记录id所对应的对象进行传递闭包处理得到新的对象;
步骤60、反复进行步骤50,直至对象的数量没有改变;
其中,所述步骤50包括:
步骤501、对每个对象所具有的记录id广播其所属的对象;
步骤502、收集每个记录id所属的对象,如果记录id所属的对象只有一个,则标记对应的对象的状态为保留;否则合并所有对象中的记录id并去重,生成新的对象并标记该新的对象的状态为新增,标记每个旧的对象的状态为删除;
步骤503、合并每个对象的状态信息,如果状态内包含新增,此对象需保留;如果状态内包含删除,此对象需删除;否则,此对象需保留;
步骤504、输出所有需要保留的对象。
2.根据权利要求1所述的基于Spark系统的大规模对象识别方法,其特征在于,步骤30还包括:如果记录不匹配任一匹配规则,匹配结果包括特殊值和该记录的记录id。
3.根据权利要求1所述的基于Spark系统的大规模对象识别方法,其特征在于,该属性串由连接符串联该所有属性的内容组成。
4.根据权利要求1所述的基于Spark系统的大规模对象识别方法,其特征在于,步骤10包括:
读取匹配规则的记录文件;
获取每个规则包含的属性列。
5.根据权利要求1所述的基于Spark系统的大规模对象识别方法,其特征在于,步骤20包括:
Spark系统读取源文件;
解析源文件中的记录数据,以分割符对每行数据进行拆分。
6.根据权利要求1所述的基于Spark系统的大规模对象识别方法,其特征在于,该匹配规则包括:
匹配规则的数据格式包括规则id及待比较的属性列的列表;
该匹配规则的含义为,对于任意两条记录,如果待比较的属性都不为空且相等,则称该两条记录匹配规则成功。
7.根据权利要求1所述的基于Spark系统的大规模对象识别方法,其特征在于,对于多条匹配规则,任意两条记录满足任一条规则即称该两条记录匹配规则成功。
8.根据权利要求1所述的基于Spark系统的大规模对象识别方法,其特征在于,如果第一规则判定第一记录和第二记录为同一对象,第二规则判定该第二记录和第三记录为同一对象,则该第一记录、第二记录和第三记录为同一对象。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510047803.7A CN104573098B (zh) | 2015-01-30 | 2015-01-30 | 基于Spark系统的大规模对象识别方法 |
PCT/CN2015/094377 WO2016119508A1 (zh) | 2015-01-30 | 2015-11-12 | 基于Spark系统的大规模对象识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510047803.7A CN104573098B (zh) | 2015-01-30 | 2015-01-30 | 基于Spark系统的大规模对象识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104573098A CN104573098A (zh) | 2015-04-29 |
CN104573098B true CN104573098B (zh) | 2018-05-29 |
Family
ID=53089160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510047803.7A Active CN104573098B (zh) | 2015-01-30 | 2015-01-30 | 基于Spark系统的大规模对象识别方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104573098B (zh) |
WO (1) | WO2016119508A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573098B (zh) * | 2015-01-30 | 2018-05-29 | 深圳市华傲数据技术有限公司 | 基于Spark系统的大规模对象识别方法 |
CN104573094B (zh) * | 2015-01-30 | 2018-05-29 | 深圳市华傲数据技术有限公司 | 网络账号识别匹配方法 |
CN106294530B (zh) * | 2015-06-29 | 2019-09-13 | 阿里巴巴集团控股有限公司 | 规则匹配的方法和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103118043A (zh) * | 2011-11-16 | 2013-05-22 | 阿里巴巴集团控股有限公司 | 一种用户账号的识别方法及设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7035842B2 (en) * | 2002-01-17 | 2006-04-25 | International Business Machines Corporation | Method, system, and program for defining asset queries in a digital library |
CN102122280B (zh) * | 2009-12-17 | 2013-06-05 | 北大方正集团有限公司 | 一种智能提取内容对象的方法及系统 |
US9639676B2 (en) * | 2012-05-31 | 2017-05-02 | Microsoft Technology Licensing, Llc | Login interface selection for computing environment user login |
CN103020782B (zh) * | 2012-12-25 | 2015-02-11 | 国网内蒙古东部电力有限公司信息通信分公司 | 内部关联交易业务的自动识别和提取方法及系统 |
CN104239501B (zh) * | 2014-09-10 | 2017-04-12 | 中国电子科技集团公司第二十八研究所 | 一种基于Spark的海量视频语义标注方法 |
CN104573098B (zh) * | 2015-01-30 | 2018-05-29 | 深圳市华傲数据技术有限公司 | 基于Spark系统的大规模对象识别方法 |
-
2015
- 2015-01-30 CN CN201510047803.7A patent/CN104573098B/zh active Active
- 2015-11-12 WO PCT/CN2015/094377 patent/WO2016119508A1/zh active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103118043A (zh) * | 2011-11-16 | 2013-05-22 | 阿里巴巴集团控股有限公司 | 一种用户账号的识别方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104573098A (zh) | 2015-04-29 |
WO2016119508A1 (zh) | 2016-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111899089A (zh) | 基于知识图谱的企业风险预警方法及系统 | |
Agarwal et al. | Approximate incremental big-data harmonization | |
CN104462396B (zh) | 字符串处理方法和装置 | |
CN117150050B (zh) | 一种基于大语言模型的知识图谱构建方法及系统 | |
CN104573098B (zh) | 基于Spark系统的大规模对象识别方法 | |
CN105678323A (zh) | 基于图的分析用户的方法和系统 | |
CN112084342A (zh) | 试题生成方法、装置、计算机设备及存储介质 | |
CN112948510B (zh) | 一种媒体行业知识图谱的构建方法 | |
CN109542891B (zh) | 数据融合方法及计算机存储介质 | |
CN116739626A (zh) | 商品数据挖掘处理方法、装置、电子设备及可读介质 | |
CN112307318A (zh) | 一种内容发布方法、系统及装置 | |
CN109902215A (zh) | 一种交易匹配的方法及系统 | |
CN110196849A (zh) | 基于大数据治理技术实现用户画像构建处理的系统及其方法 | |
CN112199488B (zh) | 面向电力客服问答的渐增式知识图谱实体抽取方法和系统 | |
CN104573095B (zh) | 基于Hadoop框架的大规模对象识别方法 | |
CN110929509B (zh) | 一种基于louvain社区发现算法的领域事件触发词聚类方法 | |
CN113434627A (zh) | 工单的处理方法、装置和计算机可读存储介质 | |
CN103678355B (zh) | 文本挖掘方法和文本挖掘装置 | |
CN115827885A (zh) | 一种运维知识图谱的构建方法、装置及电子设备 | |
CN116303379A (zh) | 一种数据处理方法、系统及计算机储存介质 | |
CN115574867A (zh) | 互感器故障检测方法、装置、电子设备及存储介质 | |
CN111026705B (zh) | 建筑工程文件管理方法、系统及终端设备 | |
CN113779200A (zh) | 目标行业词库的生成方法、处理器及装置 | |
CN112559739A (zh) | 电力设备绝缘状态数据处理方法 | |
CN110781309A (zh) | 一种基于模式匹配的实体并列关系相似度计算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 518057 2203/2204, Building 1, Huide Building, North Station Community, Minzhi Street, Longhua District, Shenzhen, Guangdong Province Patentee after: SHENZHEN AUDAQUE DATA TECHNOLOGY Ltd. Address before: 518057 Rooms 713, 715 and 716, 7/F, Software Building, No. 9, High-tech Middle Road, High-tech Zone, Nanshan District, Shenzhen, Guangdong Province Patentee before: SHENZHEN AUDAQUE DATA TECHNOLOGY Ltd. |