一种图数据的分区方法、装置以及设备与流程

专利2022-06-30  64


本说明书涉及计算机技术领域,尤其涉及一种图数据的分区方法、装置以及设备。



背景技术:

图在生活中无处不在,社交媒体、科学中分子结构关系、电商平台的广告推荐、网页信息等等,都能够以图数据的形式进行表达。图能够将人、产品、想法、事实、兴趣爱好之间的关系全部转换存储。各种场景下的信息都能转成图来表示,同时我们可以利用图来进行数据挖掘和机器学习,比如识别出有影响力的人和信息、社区发现、寻找产品和广告的投放用户、给有依赖关系的复杂数据构建模型、分类标签等等这些都可以使用图来完成。随着互联网的飞速发展,会产生海量的图数据,图分布式存储分区算法(图分区)应运而生,以满足海量图数据的分区。

现有技术中,边分割(edge-cut)和点分割(vertex-cut)为重要的图分区方法。边分割能够节省存储空间,但是会产生额外的边数据,需要跨机器通信传输数据,内网通信流量大。点分割具有较好的性能,但是会产生额外的节点数据,冗余较大,会增加存储开销。

因此,需要一种更为便捷、高效的图数据的分区方法。



技术实现要素:

本说明书实施例提供一种图数据的分区方法、装置以及设备,用于解决以下技术问题:边分割会产生额外的边数据,内网通信流量大和/或边分割会产生额外的节点数据,冗余较大,会增加存储开销。

为解决上述技术问题,本说明书实施例是这样实现的:

本说明书实施例提供的一种图数据的分区方法,包括:

获取待处理的图数据;

对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果;

基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,以使所述第二分区结果中相邻连通图的顶点数据和/或边数据存储在同一个分区中,所述第二分区结果为所述待处理的图数据的最终分区结果。

本说明书实施例提供的一种图数据的分区装置,包括:

获取模块,获取待处理的图数据;

第一分区模块,对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果;

第二分区模块,基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,以使所述第二分区结果中相邻连通图的顶点数据和/或边数据存储在同一个分区中,所述第二分区结果为所述待处理的图数据的最终分区结果。

本说明书实施例还提供一种电子设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:

获取待处理的图数据;

对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果;

基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,以使所述第二分区结果中相邻连通图的顶点数据和/或边数据存储在同一个分区中,所述第二分区结果为所述待处理的图数据的最终分区结果。

本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:

本说明书实施例采用对待处理的图数据进行打散处理,进而采用l聚类分析,以使第二分区结果中的相邻连通图的顶点数据和/或边数据存储在同一个分区中,从而实现对图数据的分区,能够实现图数据的存储负载均匀,避免热点问题,且能够提升图数据的计算效率。

附图说明

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

图1为本说明书实施例提供的一种图数据的分区框架图;

图2为本说明书实施例提供的又一种图数据的分区方法

图3为本说明书实施例提供的一种图数据分区示意图;

图4为本说明书实施例提供的图数据的分区方法示意图;

图5为本说明书实施例提供的一种图数据的分区装置的示意图。

其中,

partition0为分区0,partition1为分区1,partition2为分区2。

具体实施方式

为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

图(graph)是由节点(亦称为顶点)的有穷非空集合和节点之间边的集合组成的数据结构,表示为g(v,e),其中,g表示一个图,v是图g中节点的集合vertices,e是图g中边的集合edges。节点与节点之间通过有向边相连。图本质上是一个递归的数据结构,每个节点的属性依赖于邻居节点的属性,可用于网页链接关系、社交网络、商品推荐等。对于互联网来说,可以把web网页看作节点,页面之间的超链接关系作为边;对于社交网络来说,可以把用户看作节点,用户之间建立的关系看作边。比如微信的社交网络,是由节点(个人、公众号)和边(关注、点赞)构成的图;淘宝的交易网络,是由节点(个人、商品)和边(购买、收藏)构成的图。

图分布式存储分区是指按照一定的策略,将大规模的图数据分发到集群内的各个节点上,进一步根据实际应用的需要,对图数据进行分布式的运算。点分割和边分割是现有技术中,进行图分布式存储的重要的存储方式。

边分割是按照边维度切分图数据,将每个节点都存储一次,但有的边会被打断分到两台机器上。边分割会产生额外的边数据,冗余小,这样做的好处是可以节省存储空间;坏处是对图数据进行基于边的计算时,对于一条两个节点被分到不同机器上的边来说,要跨机器通信传输数据,内网通信流量大。

点分割是按照点维度切分图数据,每条边只存储一次,都只会出现在一台机器上。邻居多的点会被复制到多台机器上,增加了存储开销,同时会引发数据同步问题。点分割会产生额外的点数据,冗余较大,但是具有较好的性能。点分割是通过边的源点id或目标点id进行哈希,将点数据分散到不同的分区。该方法,若节点中关联了多个叶子节点,则会将点数据划分到同一个分区,造成分区负载不均,从而带来热点问题。

图计算可以用于风险防控中,根据社交关系、资金关系,利用模式匹配、图聚类等方法,解决反作弊、反赌博、薅羊毛等;图计算也可以用于推荐场景中,根据社交关系、商品关系对用户的需求进行挖掘,根据用户喜好推荐商品。由于图计算的应用场景比较多,因此,提高图计算的效率具有重要意义。

基于上述问题,本说明书实施例提供一种新的图数据的分区方法,基于边-二维分区方法和lpa算法,对图数据实现分区。

图1为本说明书实施例提供的一种图数据的分区框架图。具体包括:

步骤s101:获取待处理的图数据。

在本说明书实施例中,待处理的图数据是表节点间关系的集合。图数据的来源可以为web端,亦可以为其它来源,在此不做限定。

在本说明书的一个实施例中,图数据中至少包括:节点v、边e和权重d,即g=(v,e,d),其中,节点表示某一时间中的对象,边描述了不同对象之间的关系。

在本说明书实施例中,步骤s101获取待处理的图数据后,进一步对待处理的图数据进行预处理,获得预处理的图数据。在本申请实施例中,图数据的预处理包括设置待处理的图数据的节点数,和/或待处理的图数据的最大迭代次数,和/或待处理的图数据的预设分区数。需要说明的是,待处理的图数据的节点数、待处理的图数据的最大迭代次数、待处理的图数据的预设分区数,可以根据具体应用场景和/或图数据自身的容量而定。

步骤s103:对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果。

现有的图数据的分区方法,容易出现热点问题,诸如一个子节点关联了很多个叶子节点,造成分区负载不均匀。为了克服该缺陷,本说明书实施例对待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果。

步骤s105:基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,以使所述第二分区结果中相邻连通图的顶点数据和/或边数据存储在同一个分区中,所述第二分区结果为所述待处理的图数据的最终分区结果。

上述步骤s103获得的第一分区结果,会存在相邻节点被复制到多台机器上,增加了存储开销,因此,本说明书实施例采用对第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,以使所述第二分区结果中相邻连通图的顶点数据和/或边数据存储在同一个分区中,所述第二分区结果为所述待处理的图数据的最终分区结果。

图2为本说明书实施例提供的又一种图数据的分区方法,以进一步理解本说明书的图数据的分区方法。如图2所示,具体步骤包括:

步骤s201:获取待处理的图数据。

步骤s203:对所述待处理的图数据进行预处理,获得预处理的图数据。

步骤s205:采用边-二维分区方法对所述待处理的图数据或所述预处理的图数据进行分区,以使所待处理的图数据的顶点数据打散,获得所述待处理的图数据或所述待处理的图数据的第一分区结果。

为了克服现有技术中,图数据分区中出现的热点问题,本说明书实施例采用边-二维分区方法对待处理的图数据进行分区。边-二维分区属于一种基于边的点分割的分区方法。

在本说明书实施例中,采用边-二维分区方法对待处理的图数据进行分区,获得待处理的图数据的第一分区结果,具体包括:

获取待处理的图数据的节点数据和边数据;

根据预设分区数,建立与预设分区数对应的矩阵;

基于边数据及矩阵,对待处理的图数据中边的源节点和/或目标节点进行哈希,获得所述待处理的图数据的第一分区结果。

在本说明书的一个实施例中,边-二维分区具体流程为:

获取边[src,dst]元素,例如[“allan”,“sam”],表示一条allan到sam的关系;

根据预设分区数9,建立对应的3*3矩阵;

计算源位置(行位置):hash(“allan”)=1,所以以allan为起点的边都在第一行;

计算目标位置(列位置):hash(“sam”)=2,所以以sam为终点的边都在第二列。

采用上述方法,能够有效打散热点,保证同一起点的边都在一个行里,磁盘位置接近,边的分区范围在有限的范围内可查,读取性能更好。

lpa算法(labelpropagationalgorithm,标签传播算法)是一种基于图的半监督学习方法,其基本思想是用已标记节点的标签信息去预测未知标记节点的标签信息,

步骤s207:所述基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果。

在本说明书实施例中,基于第一分区结果,采用lpa算法对第一分区结果中对应的各个节点进行聚类分析,获得待处理的图数据的第二分区结果,具体包括:

基于lpa算法,获得第一分区结果中各个节点所属于的节点类型;

基于节点类型和/或预设分区数,对各个节点进行合并和/或拆解,获得待处理数据的第二分区结果。

在本说明书实施例中,lpa算法具体为:

将当前节点数据对应的节点类型的分值取最大值,将分值最大值对应的节点类型作为当前节点数据的节点类型;

其中,ntype表示节点数据的类型,nscore表示节点类型的分值,wij表示边数据的权重。

为进一步理解lpa算法,在本说明书实施例中,lpa算法的具体流程为:

以第一分区结果中,各个节点id作为边权重,并设置节点类型分值;

按照所述边权重传播节点类型分值,并更新当前节点数据的类型;

当迭代次数达到预设最大迭代次数和/或更新得到的节点数量达到预设节点阈值时,获得的节点数据的类型作为所述第一分区结果中各个节点数据的类型。

需要说明的是,节点id为待处理图数据中的节点id,节点类型分值设置为1。

图3为本说明书实施例提供的一种图数据分区示意图。从图3中可以看出,能够使相邻顶点数据和/或边数据存储在同一个分区内。因此,采用本说明书实施例提供方法,获得第二分区结果,以使使第二分区结果中相邻联通图的顶点数据和/或边数据都存储在同一个分区中,从而实现消息传播更加本地化,效率更高。

需要说明的是,图3中,partition0为分区0,partition1为分区1,partition2为分区2,仅为分区示意,数字0、1、2为分区标号,仅为示意表示。

在本说明书实施例中,基于节点类型和/或预设分区数,对各个节点进行合并和/或拆解,具体包括:

若第一分区结果中,属于同一节点类型的节点的数量小于或者等于预设节点阈值和/或所述第一分区结果的分区数大于预设分区数,则对不同节点类型的节点进行合并存储;

若第一分区结果中,属于同一节点类型的节点的数量大于预设节点阈值和/或所述第一分区结果的分区数小于预设分区数,则对属于同一节点类型的节点进行拆解存储。

需要说明的是,预设节点阈值为待处理的图数据中的节点数,该节点数为图数据进行分区时的最大节点数。

为便于理解本说明书实施例中提供的分区方法,图4为本说明书实施例提供的图数据的分区方法示意图。

需要说明的是,图4中,partition0为分区0,partition1为分区1,partition2为分区2,仅为分区示意,数字0、1、2为分区标号,仅为示意表示。图4中的数值仅为权重示意。

本说明书实施例提供的图数据的分区方法,考虑了热点传播问题及存储负载均匀问题,能够实现图数据的存储负载均匀,避免热点问题,且能够提升图数据的计算效率。

上述内容详细说明了一种图数据的分区方法,与之相应的,本说明书实施例还提供了一种图数据的分区装置,如图5所示。图5为本说明书实施例提供的一种图数据的分区装置的示意图,该分区装置包括:

获取模块501,获取待处理的图数据;

第一分区模块503,对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果;

第二分区模块505,基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,以使所述第二分区结果中相邻连通图的顶点数据和/或边数据存储在同一个分区中,所述第二分区结果为所述待处理的图数据的最终分区结果。

该分区装置还包括:

预处理模块507:所述预处理模块507用于对所述待处理的图数据进行预处理,获得预处理的图数据,其中,所述预处理包括设置所述待处理的图数据的节点数和/或所述待处理的图数据的最大迭代次数和/或所述待处理的图数据的预设分区数。进一步地,第一分区模块503,具体包括:

采用边-二维分区方法对所述待处理的图数据进行分区,以使所待处理的图数据的顶点数据打散,获得所述待处理的图数据的第一分区结果。

进一步地,第一分区模块503,具体包括:

获取所述待处理的图数据的节点数据和边数据;

根据预设分区数,建立与所述预设分区数对应的矩阵;

基于所述边数据及所述矩阵,对所述待处理的图数据中边的源节点和/或目标节点进行哈希,获得所述待处理的图数据的第一分区结果。

第二分区模块505,具体包括:

基于所述第一分区结果,采用lpa算法对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果。

进一步地,第二分区模块505,具体包括:

基于lpa算法,获得所述第一分区结果中各个节点所属于的节点类型;

基于所述节点类型和/或所述预设分区数,对各个节点进行合并和/或拆解,获得所述待处理数据的第二分区结果。

进一步地,

若所述第一分区结果中,属于同一节点类型的节点的数量小于或者等于预设节点阈值和/或所述第一分区结果的分区数大于预设分区数,则对不同节点类型的节点进行合并存储;

若所述第一分区结果中,属于同一节点类型的节点的数量大于预设节点阈值和/或所述第一分区结果的分区数小于预设分区数,则对属于同一节点类型的节点进行拆解存储。

所述lpa算法具体为:

将当前节点数据对应的节点类型的分值取最大值,将分值最大值对应的节点类型作为当前节点数据的节点类型;

其中,ntype表示节点数据的类型,nscore表示节点类型的分值,wij表示边数据的权重。

所述lpa算法,具体流程为:

以所述第一分区结果中,各个节点id作为边权重,并设置节点类型分值;

按照所述边权重传播节点类型分值,并更新当前节点数据的类型;

当迭代次数达到预设最大迭代次数和/或更新得到的节点数量达到预设节点阈值时,获得的节点数据的类型作为所述第一分区结果中各个节点数据的类型。

本说明书实施例还提供一种电子设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:

获取待处理的图数据;

对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果;

基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,以使所述第二分区结果中相邻连通图的顶点数据和/或边数据存储在同一个分区中,所述第二分区结果为所述待处理的图数据的最终分区结果。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书实施例提供的装置、电子设备、非易失性计算机存储介质与方法是对应的,因此,装置、电子设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、电子设备、非易失性计算机存储介质的有益技术效果。

在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书一个或多个实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本说明书实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。


技术特征:

1.一种图数据的分区方法,包括:

获取待处理的图数据;

对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果;

基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,以使所述第二分区结果中相邻连通图的顶点数据和/或边数据存储在同一个分区中,所述第二分区结果为所述待处理的图数据的最终分区结果。

2.如权利要求1所述的分区方法,所述获取待处理的图数据,进一步包括:

对所述待处理的图数据进行预处理,获得预处理的图数据,其中,所述预处理包括设置所述待处理的图数据的节点数,和/或所述待处理的图数据的最大迭代次数,和/或所述待处理的图数据的预设分区数。

3.如权利要求1或2所述的分区方法,所述对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果,具体包括:

采用边-二维分区方法对所述待处理的图数据进行分区,以使所待处理的图数据的顶点数据打散,获得所述待处理的图数据的第一分区结果。

4.如权利要求1或2所述的分区方法,所述对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果,具体包括:

获取所述待处理的图数据的节点数据和边数据;

根据预设分区数,建立与所述预设分区数对应的矩阵;

基于所述边数据及所述矩阵,对所述待处理的图数据中边的源节点和/或目标节点进行哈希,获得所述待处理的图数据的第一分区结果。

5.如权利要求1所述的分区方法,所述基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,具体包括:

基于所述第一分区结果,采用lpa算法对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果。

6.如权利要求5所述的方法,所述基于所述第一分区结果,采用lpa算法对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,具体包括:

基于lpa算法,获得所述第一分区结果中各个节点所属于的节点类型;

基于所述节点类型和/或所述预设分区数,对各个节点进行合并和/或拆解,获得所述待处理数据的第二分区结果。

7.如权利要求6所述的分区方法,所述基于所述节点类型和/或所述预设分区数,对各个节点进行合并和/或拆解,具体包括:

若所述第一分区结果中,属于同一节点类型的节点的数量小于或者等于预设节点阈值和/或所述第一分区结果的分区数大于预设分区数,则对不同节点类型的节点进行合并存储;

若所述第一分区结果中,属于同一节点类型的节点的数量大于预设节点阈值和/或所述第一分区结果的分区数小于预设分区数,则对属于同一节点类型的节点进行拆解存储。

8.如权利要求6所述的分区算法,所述lpa算法具体为:

将当前节点数据对应的节点类型的分值取最大值,将分值最大值对应的节点类型作为当前节点数据的节点类型;

其中,ntype表示节点数据的类型,nscore表示节点类型的分值,wij表示边数据的权重。

9.如权利要求6所述的分区算法,所述lpa算法,具体流程为:

以所述第一分区结果中,各个节点id作为边权重,并设置节点类型分值;

按照所述边权重传播所述节点类型分值,并更新当前节点数据的类型;

当迭代次数达到预设最大迭代次数和/或更新得到的节点数量达到预设节点阈值时,获得的节点数据的类型作为所述第一分区结果中各个节点数据的类型。

10.一种图数据的分区装置,包括:

获取模块,获取待处理的图数据;

第一分区模块,对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果;

第二分区模块,基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,以使所述第二分区结果中相邻连通图的顶点数据和/或边数据存储在同一个分区中,所述第二分区结果为所述待处理的图数据的最终分区结果。

11.如权利要求10所述的分区装置,所述获取待处理的图数据,进一步包括:

对所述待处理的图数据进行预处理,获得预处理的图数据,其中,所述预处理包括设置所述待处理的图数据的节点数,和/或所述待处理的图数据的最大迭代次数,和/或所述待处理的图数据的预设分区数。

12.如权利要求10或11所述的分区装置,所述对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果,具体包括:

采用边-二维分区方法对所述待处理的图数据进行分区,以使所待处理的图数据的顶点数据打散,获得所述待处理的图数据的第一分区结果。

13.如权利要求10或11所述的分区装置,所述对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果,具体包括:具体包括:

获取所述待处理的图数据的节点数据和边数据;

根据预设分区数,建立与所述预设分区数对应的矩阵;

基于所述边数据及所述矩阵,对所述待处理的图数据中边的源节点和/或目标节点进行哈希,获得所述待处理的图数据的第一分区结果。

14.如权利要求10所述的分区装置,所述基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,具体包括:

基于所述第一分区结果,采用lpa算法对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果。

15.如权利要求14所述的分区装置,所述基于所述第一分区结果,采用lpa算法对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,具体包括:

基于lpa算法,获得所述第一分区结果中各个节点所属于的节点类型;

基于所述节点类型和/或所述预设分区数,对各个节点进行合并和/或拆解,获得所述待处理数据的第二分区结果。

16.如权利要求15所述的分区装置,所述基于所述节点类型和/或所述预设分区数,对各个节点进行合并和/或拆解,具体包括:

若所述第一分区结果中,属于同一节点类型的节点的数量小于或者等于预设节点阈值和/或所述第一分区结果的分区数大于预设分区数,则对不同节点类型的节点进行合并存储;

若所述第一分区结果中,属于同一节点类型的节点的数量大于预设节点阈值和/或所述第一分区结果的分区数小于预设分区数,则对属于同一节点类型的节点进行拆解存储。

17.如权利要求15所述的分区装置,所述lpa算法具体为:

将当前节点数据对应的节点类型的分值取最大值,将分值最大值对应的节点类型作为当前节点数据的节点类型;

其中,ntype表示节点数据的类型,nscore表示节点类型的分值,wij表示边数据的权重。

18.如权利要求15所述的分区装置,所述lpa算法,具体流程为:

以所述第一分区结果中,各个节点id作为边权重,并设置节点类型分值;

按照所述边权重传播所述节点类型分值,并更新当前节点数据的类型;

当迭代次数达到预设最大迭代次数和/或更新得到的节点数量达到预设节点阈值时,获得的节点数据的类型作为所述第一分区结果中各个节点数据的类型。

19.一种电子设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:

获取待处理的图数据;

对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果;

基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,以使所述第二分区结果中相邻连通图的顶点数据和/或边数据存储在同一个分区中,所述第二分区结果为所述待处理的图数据的最终分区结果。

技术总结
本说明书实施例公开了一种图数据的分区方法、装置以及设备。所述方法包括:获取待处理的图数据;对所述待处理的图数据的节点数据进行打散处理,获得所述待处理的图数据的第一分区结果;基于所述第一分区结果,对所述第一分区结果中对应的各个节点进行聚类分析,获得所述待处理的图数据的第二分区结果,以使所述第二分区结果中相邻连通图的顶点数据和/或边数据存储在同一个分区中,所述第二分区结果为所述待处理的图数据的最终分区结果。采用本说明书实施例提供的图数据的分区方法,能够实现图数据的存储负载均匀,避免热点问题,且能够提升图数据的计算效率。

技术研发人员:唐德荣
受保护的技术使用者:支付宝(杭州)信息技术有限公司
技术研发日:2020.01.16
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-57066.html

最新回复(0)