基于图数据的全量关系计算方法、装置、设备及存储介质与流程

文档序号:19492181发布日期:2019-12-24 14:06阅读:185来源:国知局
基于图数据的全量关系计算方法、装置、设备及存储介质与流程

本发明涉及大数据技术领域,尤其涉及基于图数据的全量关系计算方法、装置、设备及存储介质。



背景技术:

图数据挖掘是关系挖掘和群体画像中的重要方法。图数据由节点和边组成,图数据中的节点用于表示发生连接的主体,图数据中的边用来表示主体之间的关联。节点通过与其相连的各个边和其他节点产生关联。图计算中的典型应用之一是查找某节点的全量关系并进行统计特征分析,其中,二度关系、三度关系的计算由于计算量和计算资源消耗非常大,成为图计算中的难点。

目前图计算的典型环境是apache软件基金会开源的spark项目中的graphx环境。graphx使用内存计算的策略,可实现快速迭代计算;然而,内存计算对内存资源的耗用量巨大,难以支撑海量数据的处理。以二度、三度关联节点的指标计算来说,使用graphx对5000万个节点,4亿条边上的图进行计算,要消耗2000gb的内存。

对全量关系的计算效率低,在社交网络上,这样的计算效率很难满足亿级到十亿级节点上的应用。



技术实现要素:

本发明提供了基于图数据的全量关系计算方法、装置、设备及存储介质,用于利用位运算合并节点属性到节点标识中,避免节点数据的复制,降低了内存资源的消耗,提高了计算效率。

本发明实施例的第一方面提供一种基于图数据的全量关系计算方法,包括:获取预处理图数据,所述预处理图数据包括每个节点的节点数据和边数据;对所述节点数据进行位运算,生成每个节点的合成节点标识;将所述节点数据和所述边数据以每个节点数据为中心进行划分,生成多个数据组,每个数据组包括一个当前节点的合成节点标识以及与当前节点连接的边数据;将每个节点的单节点标识列表发送给所有的相邻节点,所述单节点标识列表用于存储所述相邻节点的合成节点标识;根据每个节点接收到的所述单节点标识列表,生成各个节点的二度关系。

可选的,在本发明实施例第一方面的第一种实现方式中,所述对所述节点数据进行位运算,生成每个节点的合成节点标识包括:确定所述节点数据中的多个节点;获取每个节点的节点属性和每个节点对应的初始节点标识;获取预置规则,所述预置规则包括每个节点标识总共的存储比特位数和每个变量占据的存储位的起止序数;按照所述每个节点标识总共的存储比特位数和所述每个变量占据的存储位的起止序数,将每个节点的节点属性和所述初始节点标识进行位运算;生成每个节点的合成节点标识。

可选的,在本发明实施例第一方面的第二种实现方式中,在所述根据每个节点接收到的所述单节点标识列表,生成各个节点的二度关系之后,所述方法还包括:根据每个节点的二度关系获取每个节点的节点属性,并根据每个节点的节点属性进行统计分析,生成分析结果。

可选的,在本发明实施例第一方面的第三种实现方式中,所述根据每个节点的二度关系获取每个节点的节点属性,并根据每个节点的节点属性进行统计分析,生成分析结果包括:读取每个节点的二度关系;从所述二度关系中确定每个节点的节点属性;按照预置规则将所述每个节点的节点属性从所述合成节点标识中分离;对所述每个节点的节点属性进行统计分析,生成分析结果。

可选的,在本发明实施例第一方面的第四种实现方式中,所述根据每个节点接收到的所述单节点标识列表,生成各个节点的二度关系包括:接收每个节点的单节点标识列表;确定每个节点的自身的合成节点标识;分别将每个节点接收到的单节点标识列表中与自身的合成节点标识相同的节点标识删除;生成每个节点的二度关系,所述二度关系用于指示二度关联节点和当前节点之间,间隔一个一度关联节点。

可选的,在本发明实施例第一方面的第五种实现方式中,在所述根据每个节点接收到的所述单节点标识列表,生成各个节点的二度关系之后,所述方法还包括:根据所述各个节点的二度关系生成二度关系标识列表,所述二度关系标识列表用于存储各个节点的二度关系;将每个节点的二度关系标识列表发送给所有的相邻节点;根据每个节点接收到的相邻节点发送的二度关系标识列表生成每个节点的三度关系标识列表,所述三度关系标识列表用于存储各个节点的三度关系,所述三度关系用于指示三度关联节点和当前节点之间,间隔一个一度关联节点和一个二度关联节点。

可选的,在本发明实施例第一方面的第六种实现方式中,在所述获取预处理图数据,所述预处理图数据包括每个节点的节点数据和边数据之前,所述方法还包括:获取每个节点的原始图数据;对所述原始图数据进行去重处理和校验处理;生成符合要求的预处理图数据。

本发明实施例的第二方面提供了一种基于图数据的全量关系计算装置,包括:第一获取单元,用于获取预处理图数据,所述预处理图数据包括每个节点的节点数据和边数据;运算生成单元,用于对所述节点数据进行位运算,生成每个节点的合成节点标识;划分生成单元,用于将所述节点数据和所述边数据以每个节点数据为中心进行划分,生成多个数据组,每个数据组包括一个当前节点的合成节点标识以及与当前节点连接的边数据;第一发送单元,用于将每个节点的单节点标识列表发送给所有的相邻节点,所述单节点标识列表用于存储所述相邻节点的合成节点标识;第一生成单元,用于根据每个节点接收到的所述单节点标识列表,生成各个节点的二度关系。

可选的,在本发明实施例第二方面的第一种实现方式中,运算生成单元具体用于:确定所述节点数据中的多个节点;获取每个节点的节点属性和每个节点对应的初始节点标识;获取预置规则,所述预置规则包括每个节点标识总共的存储比特位数和每个变量占据的存储位的起止序数;按照所述每个节点标识总共的存储比特位数和所述每个变量占据的存储位的起止序数,将每个节点的节点属性和所述初始节点标识进行位运算;生成每个节点的合成节点标识。

可选的,在本发明实施例第二方面的第二种实现方式中,基于图数据的全量关系计算装置还包括:统计分析单元,用于根据每个节点的二度关系获取每个节点的节点属性,并根据每个节点的节点属性进行统计分析,生成分析结果。

可选的,在本发明实施例第二方面的第三种实现方式中,统计分析单元具体用于:读取每个节点的二度关系;从所述二度关系中确定每个节点的节点属性;按照预置规则将所述每个节点的节点属性从所述合成节点标识中分离;对所述每个节点的节点属性进行统计分析,生成分析结果。

可选的,在本发明实施例第二方面的第四种实现方式中,第一生成单元具体用于:接收每个节点的单节点标识列表;确定每个节点的自身的合成节点标识;分别将每个节点接收到的单节点标识列表中与自身的合成节点标识相同的节点标识删除;生成每个节点的二度关系,所述二度关系用于指示二度关联节点和当前节点之间,间隔一个一度关联节点。

可选的,在本发明实施例第二方面的第五种实现方式中,基于图数据的全量关系计算装置还包括:第二生成单元,用于根据所述各个节点的二度关系生成二度关系标识列表,所述二度关系标识列表用于存储各个节点的二度关系;第二发送单元,用于将每个节点的二度关系标识列表发送给所有的相邻节点;第三生成单元,用于根据每个节点接收到的相邻节点发送的二度关系标识列表生成每个节点的三度关系标识列表,所述三度关系标识列表用于存储各个节点的三度关系,所述三度关系用于指示三度关联节点和当前节点之间,间隔一个一度关联节点和一个二度关联节点。

可选的,在本发明实施例第二方面的第六种实现方式中,基于图数据的全量关系计算装置还包括:第二获取单元,用于获取每个节点的原始图数据;处理单元,用于对所述原始图数据进行去重处理和校验处理;第四生成单元,用于生成符合要求的预处理图数据。

本发明实施例的第三方面提供了一种基于图数据的全量关系计算设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一实施方式所述的基于图数据的全量关系计算方法。

本发明实施例的第四方面提供了一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行上述任一实施方式所述的基于图数据的全量关系计算方法的步骤。

本发明实施例提供的技术方案中,获取预处理图数据,所述预处理图数据包括每个节点的节点数据和边数据;对所述节点数据进行位运算,生成每个节点的合成节点标识;将所述节点数据和所述边数据以每个节点数据为中心进行划分,生成多个数据组,每个数据组包括一个当前节点的合成节点标识以及与当前节点连接的边数据;将每个节点的单节点标识列表发送给所有的相邻节点,所述单节点标识列表用于存储所述相邻节点的合成节点标识;根据每个节点接收到的所述单节点标识列表,生成各个节点的二度关系。本发明实施例,利用位运算合并节点属性到节点标识中,并排除自身相连的情况,避免节点数据的复制,降低了内存资源的消耗,提高了计算效率。

附图说明

图1为本发明实施例中基于图数据的全量关系计算方法的一个实施例示意图;

图2为本发明实施例中基于图数据的全量关系计算方法的另一个实施例示意图;

图3为本发明实施例中基于图数据的全量关系计算装置的一个实施例示意图;

图4为本发明实施例中基于图数据的全量关系计算装置的另一个实施例示意图;

图5为本发明实施例中基于图数据的全量关系计算设备的一个实施例示意图。

具体实施方式

本发明提供了基于图数据的全量关系计算方法、装置、设备及存储介质,用于利用位运算合并节点属性到节点标识中,避免节点数据的复制,降低了内存资源的消耗,提高了计算效率。

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例进行描述。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

请参阅图1,本发明实施例提供的基于图数据的全量关系计算方法的流程图,具体包括:

101、获取预处理图数据,预处理图数据包括每个节点的节点数据和边数据。

服务器获取预处理图数据,预处理图数据包括每个节点的节点数据和边数据。具体的,服务器通过spark加载预处理图数据,其中,预处理图数据由节点数据和边数据组成,图数据中的节点数据用于表示发生连接的主体,边数据用来表示主体之间的关联。一个节点通过与其相连的各个边和其他节点产生关联。一个目标节点的节点数据包括目标节点属性和一个目标节点标识,一个目标边数据包括一个目标边标识和与目标边相连的两个节点标识。

其中,节点属性包含节点的若干标签数据。例如,节点标签数据可包括一个身份证号,一个手机号,以及3个布尔型变量a、b、c。其中,变量a用于指示用户性别,用1表示男性,用0表示女性;变量b用于指示是否失信,用1表示失信,用0表示未失信;变量c用于指示是否有大学学历,用1表示有大学学历,用0表示没有大学学历。

需要说明的是,本发明实施例,预处理图数据为已经对海量原始图数据进行去重处理,并筛选出符合要求的图数据。

可以理解的是,本发明的执行主体可以为基于图数据的全量关系计算装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。

102、对节点数据进行位运算,生成每个节点的合成节点标识。

服务器对节点数据进行位运算,生成每个节点的合成节点标识。具体的,服务器确定节点数据中的多个节点;服务器获取每个节点的节点属性和每个节点对应的初始节点标识;服务器获取预置规则,预置规则包括每个节点标识总共的存储比特位数和每个变量占据的存储位的起止序数;服务器按照每个节点标识总共的存储比特位数和每个变量占据的存储位的起止序数将每个节点的节点属性和初始节点标识进行位运算;服务器生成每个节点的合成节点标识。其中,预置规则包含:(1)每个节点标识总共的存储比特位数;(2)每个变量占据的存储位的起止序数。本实施例以存储身份证号,手机号,以及前述的三个布尔型变量a、b、c为例进行说明。

例如,服务器通过计算得到身份证号占用61比特,手机号占用37比特,3个布尔型变量一共占用3个比特,总共占用61+37+3=101个比特。这种情况下,预置规则为:(1)每个节点分配101比特存储位;(2)1-61比特用于存储身份证号,第62-98位存储手机号,第99位存储变量a,第100位存储变量b,第101位存储变量c。服务器通过使用位存储,而不是给每个变量单独赋予双整型的存储空间,节约了大量的内存资源。

需要说明的是,初始节点标识是图数据的预处理阶段由用户收集并存放在计算机外存储器(硬盘)上的。开始计算后,服务器将初始节点标识载入到内存储器中。初始节点标识的数据属于原始数据,其收集发生在位运算之前。

103、将节点数据和边数据以每个节点数据为中心进行划分,生成多个数据组,每个数据组包括一个当前节点的合成节点标识以及与当前节点连接的边数据。

服务器将节点数据和边数据以每个节点数据为中心进行划分,生成多个数据组,每个数据组包括一个当前节点的合成节点标识以及与当前节点连接的边数据。

需要说明的是,图数据包含节点数据和边数据,加载到内存中后,为了进行分布式计算,需要将图数据切割成小的处理单元,即这里说的“数据组”。通过建立以节点为中心的“数据组”,确保了每个节点仅有一个拷贝,仅会出现一次,避免出现多个节点数据的复制。

例如,一个数据组包含本节点标识以及该节点上所有的边数据,其中一条边数据包含了该节点和与其相连接的另外一个节点的合成节点标识,但是不包括相连接节点的任何属性数据。

104、将每个节点的单节点标识列表发送给所有的相邻节点,单节点标识列表用于存储相邻节点的合成节点标识。

服务器将每个节点的单节点标识列表发送给所有的相邻节点,单节点标识列表用于存储每个节点的相邻节点的合成节点标识。

需要说明的是,单节点标识列表是根据数据组上的边数据收集得到的。因为边数据上包含了当前节点和与当前节点相连的一度关联节点的合成节点标识,通过遍历所有边数据,即可收集全部相连接的节点。单节点标识列表中仅包含相邻节点的合成节点标识。

例如,节点a与节点b、c、d是相邻节点。那么首先收集得到所有相邻节点的标识列表(即单节点标识列表),这里的节点标识就是a、b、c、d四个字母(此处为简单举例,实际情况下包含上亿节点,需要用更复杂的节点标识来表示,例如当设备是节点时,用设备的生产信息,如生成日期,流水号等做节点标识)。对节点a来说,获取到的节点标识列表就是[b、c、d]这个列表;然后,节点a将[b、c、d]这个列表分别传递给b、c、d三个节点。

105、根据每个节点接收到的单节点标识列表,生成各个节点的二度关系。

服务器根据每个节点接收到的单节点标识列表,生成各个节点的二度关系。具体的,服务器接收每个节点的单节点标识列表;服务器确定每个节点的自身的合成节点标识;服务器分别将每个节点接收到的单节点标识列表中与自身的合成节点标识相同的节点标识删除;服务器生成每个节点的二度关系,二度关系用于指示二度关联节点和当前节点之间,间隔一个一度关联节点。

需要说明的是,因为自身的合成节点标识属于0度关系,非两度关系。将列表中与自身相同的合成节点标识删除,即完成了将自身节点排除。例如,根据上文描述的场景,节点a与节点b、c、d相连,节点b、c、d不直接连接,那么节点b收到节点a发送过来的列表[b、c、d]之后,将列表中的b删除,列表中还余下[c、d]两个节点,这两个节点即是b的二度关系。

可以理解的是,一度关系是指两个节点之间相连,即相邻节点;二度关系是指两个节点中间隔一个节点。例如上面的例子,节点b和节点c之间隔了节点a,因此节点b和节点c是二度关联,即节点b和节点c具有二度关系。

可选的,步骤105之后,还包括:服务器根据每个节点的二度关系获取每个节点的节点属性,并根据每个节点的节点属性进行统计分析,生成分析结果。具体的,服务器读取每个节点的二度关系;服务器从二度关系中确定每个节点的节点属性;服务器按照预置规则将每个节点的节点属性从合成节点标识中分离;服务器对每个节点的节点属性进行统计分析,生成分析结果。

本发明实施例,通过以节点数据为中心进行划分最小处理单元,避免生成大量重复的节点数据,减少了节点数据所占用的内存资源,节省了大量的计算资源,提高了计算效率。

请参阅图2,本发明实施例提供的基于图数据的全量关系计算方法的另一个流程图,具体包括:

201、获取预处理图数据,预处理图数据包括每个节点的节点数据和边数据。

服务器获取预处理图数据,预处理图数据包括每个节点的节点数据和边数据。具体的,服务器通过spark加载预处理图数据,其中,预处理图数据由节点数据和边数据组成,图数据中的节点数据用于表示发生连接的主体,边数据用来表示主体之间的关联。一个节点通过与其相连的各个边和其他节点产生关联。一个目标节点的节点数据包括目标节点属性和一个目标节点标识,一个目标边数据包括一个目标边标识和与目标边相连的两个节点标识。

其中,节点属性包含节点的若干标签数据。例如,节点标签数据可包括一个身份证号,一个手机号,以及3个布尔型变量a、b、c。其中,变量a用于指示用户性别,用1表示男性,用0表示女性;变量b用于指示是否失信,用1表示失信,用0表示未失信;变量c用于指示是否有大学学历,用1表示有大学学历,用0表示没有大学学历。

需要说明的是,本发明实施例,预处理图数据为已经对海量原始图数据进行去重处理,并筛选出符合要求的图数据。

可以理解的是,本发明的执行主体可以为基于图数据的全量关系计算装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。

202、对节点数据进行位运算,生成每个节点的合成节点标识。

服务器对节点数据进行位运算,生成每个节点的合成节点标识。具体的,服务器确定节点数据中的多个节点;服务器获取每个节点的节点属性和每个节点对应的初始节点标识;服务器获取预置规则,预置规则包括每个节点标识总共的存储比特位数和每个变量占据的存储位的起止序数;服务器按照每个节点标识总共的存储比特位数和每个变量占据的存储位的起止序数将每个节点的节点属性和初始节点标识进行位运算;服务器生成每个节点的合成节点标识。其中,预置规则包含:(1)每个节点标识总共的存储比特位数;(2)每个变量占据的存储位的起止序数。本实施例以存储身份证号,手机号,以及前述的三个布尔型变量a、b、c为例进行说明。

例如,服务器通过计算得到身份证号占用61比特,手机号占用37比特,3个布尔型变量一共占用3个比特,总共占用61+37+3=101个比特。这种情况下,预置规则为:(1)每个节点分配101比特存储位;(2)1-61比特用于存储身份证号,第62-98位存储手机号,第99位存储变量a,第100位存储变量b,第101位存储变量c。服务器通过使用位存储,而不是给每个变量单独赋予双整型的存储空间,节约了大量的内存资源。

需要说明的是,初始节点标识是图数据的预处理阶段由用户收集并存放在计算机外存储器(硬盘)上的。开始计算后,服务器将初始节点标识载入到内存储器中。初始节点标识的数据属于原始数据,其收集发生在位运算之前。

203、将节点数据和边数据以每个节点数据为中心进行划分,生成多个数据组,每个数据组包括一个当前节点的合成节点标识以及与当前节点连接的边数据。

服务器将节点数据和边数据以每个节点数据为中心进行划分,生成多个数据组,每个数据组包括一个当前节点的合成节点标识以及与当前节点连接的边数据。

需要说明的是,图数据包含节点数据和边数据,加载到内存中后,为了进行分布式计算,需要将图数据切割成小的处理单元,即这里说的“数据组”。通过建立以节点为中心的“数据组”,确保了每个节点仅有一个拷贝,仅会出现一次,避免出现多个节点数据的复制。

例如,一个数据组包含本节点标识以及该节点上所有的边数据,其中一条边数据包含了该节点和与其相连接的另外一个节点的合成节点标识,但是不包括相连接节点的任何属性数据。

204、将每个节点的单节点标识列表发送给所有的相邻节点,单节点标识列表用于存储相邻节点的合成节点标识。

服务器将每个节点的单节点标识列表发送给所有的相邻节点,单节点标识列表用于存储每个节点的相邻节点的合成节点标识。

需要说明的是,单节点标识列表是根据数据组上的边数据收集得到的。因为边数据上包含了当前节点和与当前节点相连的一度关联节点的合成节点标识,通过遍历所有边数据,即可收集全部相连接的节点。单节点标识列表中仅包含相邻节点的合成节点标识。

例如,节点a与节点b、c、d是相邻节点。那么首先收集得到所有相邻节点的标识列表(即单节点标识列表),这里的节点标识就是a、b、c、d四个字母(此处为简单举例,实际情况下包含上亿节点,需要用更复杂的节点标识来表示,例如当设备是节点时,用设备的生产信息,如生成日期,流水号等做节点标识)。对节点a来说,获取到的节点标识列表就是[b、c、d]这个列表;然后,节点a将[b、c、d]这个列表分别传递给b、c、d三个节点。

205、根据每个节点接收到的单节点标识列表,生成各个节点的二度关系。

服务器根据每个节点接收到的单节点标识列表,生成各个节点的二度关系。具体的,服务器接收每个节点的单节点标识列表;服务器确定每个节点的自身的合成节点标识;服务器分别将每个节点接收到的单节点标识列表中与自身的合成节点标识相同的节点标识删除;服务器生成每个节点的二度关系,二度关系用于指示二度关联节点和当前节点之间,间隔一个一度关联节点。

需要说明的是,因为自身的合成节点标识属于0度关系,非两度关系。将列表中与自身相同的合成节点标识删除,即完成了将自身节点排除。例如,根据上文描述的场景,节点a与节点b、c、d相连,节点b、c、d不直接连接,那么节点b收到节点a发送过来的列表[b、c、d]之后,将列表中的b删除,列表中还余下[c、d]两个节点,这两个节点即是b的二度关系。

可以理解的是,一度关系是指两个节点之间相连,即相邻节点;二度关系是指两个节点之间间隔一个节点。例如上面的例子,节点b和节点c之间隔了节点a,因此节点b和节点c是二度关联,即节点b和节点c具有二度关系。

206、根据各个节点的二度关系生成二度关系标识列表,二度关系标识列表用于存储各个节点的二度关系。

服务器根据各个节点的二度关系生成二度关系标识列表,二度关系标识列表用于存储各个节点的二度关系。

207、将每个节点的二度关系标识列表发送给所有的相邻节点。

服务器将每个节点的二度关系标识列表发送给所有的相邻节点,二度关系标识列表用于存储每个节点的相邻节点的合成节点标识。

208、根据每个节点接收到的相邻节点发送的二度关系标识列表生成每个节点的三度关系标识列表,三度关系标识列表用于存储各个节点的三度关系,三度关系用于指示三度关联节点和当前节点之间,间隔一个一度关联节点和一个二度关联节点。

服务器根据每个节点接收到的相邻节点发送的二度关系标识列表生成每个节点的三度关系标识列表,三度关系标识列表用于存储各个节点的三度关系,三度关系用于指示三度关联节点和当前节点之间,间隔一个一度关联节点和一个二度关联节点。具体的,服务器获取每个节点的二度关系标识列表;服务器确定每个节点的自身的合成节点标识;服务器分别将每个节点接收到的二度关系标识列表中与自身的合成节点标识相同的节点标识删除;服务器确定每个节点的三度关系,三度关系用于指示两个节点之间,间隔两个节点(即指示三度关联节点和当前节点之间间隔一个一度关联节点和一个二度关联节点);生成三度关系标识列表,三度关系标识列表用于存储每个节点的三度关系。

需要说明的是,因为自身的合成节点标识属于0度关系,非三度关系。将列表中与自身相同的节点标识删除,即完成了将自身节点排除。同时,需要在三度关系列表中排除一度和二度关系。例如,节点a与节点b、c、d相连,节点e与节点b相连,节点b、c、d不直接连接,那么节点b收到节点a发送过来的列表[b、c、d]之后,将列表中的b删除,列表中还余下[c、d]两个节点。这两个节点即是b的二度关系。节点b继续将列表[c、d]发送至节点e,则得到节点e的三度关系列表,即节点e与节点c,e与d形成三度关系。这里不存在自身相连的情况(即自身的合成节点标识),同时,节点b也会将节点标识列表[c、d]发送至节点a。然而,由于列表[c、d]同时存在于节点a的一度关系列表[b、c、d]中,因此,c和d需要排除,不与a形成三度关系。

本发明实施例,通过以节点数据为中心进行划分最小处理单元,避免生成大量重复的节点数据,减少了节点数据所占用的内存资源,节省了大量的计算资源,提高了计算效率。

可选的,步骤208之后,还包括:服务器根据每个节点的三度关系标识列表获取每个节点的节点属性,并根据每个节点的节点属性进行统计分析。具体的,这里的分离是说将节点属性从合成节点标识读出的过程。和前面数据读入的过程是对应的,遵循统一的节点属性预置规则。使用前述的例子,用101个比特位存储身份证号,手机号,和a、b、c三个布尔型变量。计算完成后,将这些数据读出时,取出第1-61比特位即读出身份证号,第62-98位读出手机号,从第99位读出变量a,第100位读出变量b,第101位读出变量c,即得到节点属性。

本发明实施例中,按照业务需要对分离得到的节点属性进行统计分析,提高了计算效率。例如统计三度关系中所有值得推荐的朋友,或者统计所有好信用的用户等等。

可选的,步骤201之前,还包括:服务器获取每个节点的原始图数据;服务器对原始图数据进行去重处理和校验处理;服务器生成符合要求的预处理图数据。

需要说明的是,本发明实施例是单纯的以节点为中心的列表,支持所有spark在弹性分布式数据集(resilientdistributeddataset,rdd)上的优化,例如rdd上的内存参数、存储方式、map的计算策略等。

上面对本发明实施例中基于图数据的全量关系计算方法进行了描述,下面对本发明实施例中基于图数据的全量关系计算装置进行描述,请参阅图3,本发明实施例中基于图数据的全量关系计算装置的一个实施例包括:

第一获取单元301,用于获取预处理图数据,所述预处理图数据包括每个节点的节点数据和边数据;

运算生成单元302,用于对所述节点数据进行位运算,生成每个节点的合成节点标识;

划分生成单元303,用于将所述节点数据和所述边数据以每个节点数据为中心进行划分,生成多个数据组,每个数据组包括一个当前节点的合成节点标识以及与当前节点连接的边数据;

第一发送单元304,用于将每个节点的单节点标识列表发送给所有的相邻节点,所述单节点标识列表用于存储所述相邻节点的合成节点标识;

第一生成单元305,用于根据每个节点接收到的所述单节点标识列表,生成各个节点的二度关系。

本发明实施例,通过以节点数据为中心进行划分最小处理单元,避免生成大量重复的节点数据,减少了节点数据所占用的内存资源,节省了大量的计算资源,提高了计算效率。

请参阅图4,本发明实施例中基于图数据的全量关系计算装置的另一个实施例包括:

第一获取单元301,用于获取预处理图数据,所述预处理图数据包括每个节点的节点数据和边数据;

运算生成单元302,用于对所述节点数据进行位运算,生成每个节点的合成节点标识;

划分生成单元303,用于将所述节点数据和所述边数据以每个节点数据为中心进行划分,生成多个数据组,每个数据组包括一个当前节点的合成节点标识以及与当前节点连接的边数据;

第一发送单元304,用于将每个节点的单节点标识列表发送给所有的相邻节点,所述单节点标识列表用于存储所述相邻节点的合成节点标识;

第一生成单元305,用于根据每个节点接收到的所述单节点标识列表,生成各个节点的二度关系。

可选的,运算生成单元302具体用于:

确定所述节点数据中的多个节点;获取每个节点的节点属性和每个节点对应的初始节点标识;获取预置规则,所述预置规则包括每个节点标识总共的存储比特位数和每个变量占据的存储位的起止序数;按照所述每个节点标识总共的存储比特位数和所述每个变量占据的存储位的起止序数,将每个节点的节点属性和所述初始节点标识进行位运算;生成每个节点的合成节点标识。

可选的,基于图数据的全量关系计算装置还包括:

统计分析单元306,用于根据每个节点的二度关系获取每个节点的节点属性,并根据每个节点的节点属性进行统计分析,生成分析结果。

可选的,统计分析单元306具体还用于:

读取每个节点的二度关系;从所述二度关系中确定每个节点的节点属性;按照预置规则将所述每个节点的节点属性从所述合成节点标识中分离;对所述每个节点的节点属性进行统计分析,生成分析结果。

可选的,第一生成单元305具体用于:

接收每个节点的单节点标识列表;确定每个节点的自身相连情况;将接收到的单节点标识列表中与自身相同的合成节点标识删除;生成每个节点的二度关系,所述二度关系用于指示二度关联节点和当前节点之间,间隔一个一度关联节点。

可选的,基于图数据的全量关系计算装置还包括:

第二生成单元307,用于根据所述各个节点的二度关系生成二度关系标识列表,所述二度关系标识列表用于存储各个节点的二度关系;

第二发送单元308,用于将每个节点的二度关系标识列表发送给所有的相邻节点;

第三生成单元309,用于根据每个节点接收到的相邻节点发送的二度关系标识列表生成每个节点的三度关系标识列表,所述三度关系标识列表用于存储各个节点的三度关系,所述三度关系用于指示三度关联节点和当前节点之间,间隔一个一度关联节点和一个二度关联节点。

可选的,基于图数据的全量关系计算装置还包括:

第二获取单元310,用于获取每个节点的原始图数据;

处理单元311,用于对所述原始图数据进行去重处理和校验处理;

第四生成单元312,用于生成符合要求的预处理图数据。

本发明实施例,通过以节点数据为中心进行划分最小处理单元,避免生成大量重复的节点数据,减少了节点数据所占用的内存资源,节省了大量的计算资源,提高了计算效率。

上面图3至图4从模块化功能实体的角度对本发明实施例中的基于图数据的全量关系计算装置进行详细描述,下面从硬件处理的角度对本发明实施例中基于图数据的全量关系计算设备进行详细描述。

图5是本发明实施例提供的一种基于图数据的全量关系计算设备的结构示意图,该基于图数据的全量关系计算设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)501(例如,一个或一个以上处理器)和存储器509,一个或一个以上存储应用程序507或数据506的存储介质508(例如一个或一个以上海量存储设备)。其中,存储器509和存储介质508可以是短暂存储或持久存储。存储在存储介质508的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对基于图数据的全量关系计算设备中的一系列指令操作。更进一步地,处理器501可以设置为与存储介质508通信,在基于图数据的全量关系计算设备500上执行存储介质508中的一系列指令操作。

基于图数据的全量关系计算设备500还可以包括一个或一个以上电源502,一个或一个以上有线或无线网络接口503,一个或一个以上输入输出接口504,和/或,一个或一个以上操作系统505,例如windowsserve,macosx,unix,linux,freebsd等等。本领域技术人员可以理解,图5中示出的基于图数据的全量关系计算设备结构并不构成对基于图数据的全量关系计算设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。处理器501可以执行上述实施例中第一获取单元301、运算生成单元302、划分生成单元303、第一生成单元305、统计分析单元306、第二生成单元307、第三生成单元309、第二获取单元310、处理单元311和第四生成单元312的功能。

下面结合图5对基于图数据的全量关系计算设备的各个构成部件进行具体的介绍:

处理器501是基于图数据的全量关系计算设备的控制中心,可以按照设置的基于图数据的全量关系计算方法进行处理。处理器501利用各种接口和线路连接整个基于图数据的全量关系计算设备的各个部分,通过运行或执行存储在存储器509内的软件程序和/或模块,以及调用存储在存储器509内的数据,执行基于图数据的全量关系计算设备的各种功能和处理数据,通过以节点数据为中心进行划分最小处理单元,避免生成大量重复的节点数据,减少了节点数据所占用的内存资源,节省了大量的计算资源,提高了计算效率。存储介质508和存储器509都是存储数据的载体,本发明实施例中,存储介质508可以是指储存容量较小,但速度快的内存储器,而存储器509可以是储存容量大,但储存速度慢的外存储器。

存储器509可用于存储软件程序以及模块,处理器501通过运行存储在存储器509的软件程序以及模块,从而执行基于图数据的全量关系计算设备500的各种功能应用以及数据处理。存储器509可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如将每个节点的单节点标识列表发送给所有的相邻节点,单节点标识列表用于存储相邻节点的合成节点标识)等;存储数据区可存储根据基于图数据的全量关系计算设备的使用所创建的数据(比如每个节点的合成节点标识)等。此外,存储器509可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。在本发明实施例中提供的基于图数据的全量关系计算方法程序和接收到的数据流存储在存储器中,当需要使用时,处理器501从存储器509中调用。

在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、双绞线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,光盘)、或者半导体介质(例如固态硬盘(solidstatedisk,ssd))等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

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

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

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

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