一种处理图数据的方法及装置制造方法及图纸

技术编号:15010310 阅读:79 留言:0更新日期:2017-04-04 15:38
本发明专利技术实施例公开了一种处理图数据的方法及装置,涉及数据挖掘技术领域,用于提高图计算的效率。该方法包括:获取图数据中的边数据和对图数据进行图计算的计算算法;根据计算算法,确定对图数据中的边数据进行分割的分割算法,分割算法为根据构成边数据的节点对图数据中的边数据进行分割的算法,构成边数据的节点为构成边数据的源节点和/或目的节点;根据分割算法和本地内存的内存容量,将图数据中的边数据分割为N个初始边数据块,N个初始边数据块中的每个初始边数据块的数据量均小于内存容量,N≥1,N为整数;将N个初始边数据块中的每个初始边数据块中的边数据按照构成边数据的节点进行排列,得到N个目标边数据块。

【技术实现步骤摘要】

本专利技术涉及数据挖掘
,尤其涉及一种处理图数据的方法及装置
技术介绍
在大数据挖掘时代,图不仅可以直接描述计算机科学、化学以及生物信息学等领域的许多现实应用,例如社交网络、web(网页)图、化学物质以及生物结构等,同时也可以用来描述各种数据挖掘算法,例如矩阵分解或最短路径等等。其中,图包括多个节点以及连接各个节点的边,图数据包括各个节点的节点数据以及连接各个节点的边的边数据,一条边的边数据包括构成该条边的源节点、目的节点和该条边的权值。在单机图计算处理平台(即采用单个计算机进行图计算的处理平台)中,由于单个计算机的本地内存的内存容量有限,当需要计算的图数据的数据量超过该内存容量时,需要对图数据中的边数据进行处理,得到多个边数据块,一个边数据块包括一个或多个边数据。目前,在对图数据中的边数据进行处理时,采用固定的方法,使得计算机在对一个边数据块中的节点的节点数据进行计算时,若无法直接获取与该节点相关的边数据,则需要对该边数据块中的边数据的排列顺序进行调整才可以得到需要的边数据。例如,在GraphChi(一种单机图计算处理平台)中,由于在图计算时是以目的节点为中心的计算模式,因此,计算机按照目的节点的ID(标识)由小至大的顺序将图数据中的边数据分割为多个边数据块(在GraphChi中称为Shard),对应同一目的节点的全部边数据被分割在一个边数据块中,为了顺序更新节点数据,每个边数据块中的边数据又按照边数据对应的源节点的ID由小至大顺序排列。该情况下,在计算机将一个边数据块读入本地内存之后,需要获取该边数据块中的多个目的节点的全部入边数据(即源节点为其他节点,目的节点为该节点的边数据)和全部出边数据(即源节点为该节点,目的节点为其他节点的边数据),以便依次对该边数据块中的多个目的节点的节点数据进行计算,为了快速的获取目的节点的全部入边数据,需要将该边数据块中的边数据按照目的节点的ID由小至大的顺序重新排序,而重新排序的过程耗时较长,使得图计算的效率较低。
技术实现思路
本专利技术的实施例提供一种处理图数据的方法及装置,用于提高图计算的效率。为达到上述目的,本专利技术的实施例采用如下技术方案:第一方面,提供一种处理图数据的方法,包括:获取图数据中的边数据和对所述图数据进行图计算的计算算法;根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N≥1,N为整数;将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,包括:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。该可选的方法,由于对应同一目的节点的全部边数据在一个目标边数据块中、且对应该目的节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该目的节点的入边数据,提高图计算的效率。进一步的,在所述将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列之后,所述方法还包括:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,包括:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。该可选的方法,由于对应同一源节点的全部边数据在一个目标边数据块中、且对应该源节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该源节点的出边数据,提高图计算的效率。进一步的,在所述将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列之后,所述方法还包括:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。可选的,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。需要说明的是,由于在计算的过程中会频繁的用到各个节点的节点数据,因此,可以将节点数据存储在本地内存中,当节点数据变化时,直接在本地内存中进行更新,在下次计算时,使用更新后的节点数据,待计算完成后,将节点数据写入磁盘中。这样一来,可以避免反复地在磁盘中读写节点数据,进一步提高图计算的效率。第二方面,提供一种处理图数据的装置,包括:获取单元,用于获取图数据中的边数据和对所述图数据进行图计算的计算算法;确定单元,用于根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;分割单元,用于根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N≥1,N为整数;排列单元,用于将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对本文档来自技高网
...

【技术保护点】
一种处理图数据的方法,其特征在于,包括:获取图数据中的边数据和对所述图数据进行图计算的计算算法;根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N≥1,N为整数;将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。

【技术特征摘要】
1.一种处理图数据的方法,其特征在于,包括:
获取图数据中的边数据和对所述图数据进行图计算的计算算法;
根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,
所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割
的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分
割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据
量均小于所述内存容量,N≥1,N为整数;
将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构
成边数据的节点进行排列,得到N个目标边数据块。
2.根据权利要求1所述的方法,其特征在于,所述计算算法在对所述
图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出
边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成
边数据的节点为构成边数据的目的节点;
将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构
成边数据的节点进行排列,包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节
点的全部边数据连续排列,得到N个目标边数据块。
3.根据权利要求2所述的方法,其特征在于,在所述将所述N个初始
边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列
之后,所述方法还包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的
全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N
个目标边数据块。
4.根据权利要求1所述的方法,其特征在于,所述计算算法在对所述
图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入
边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边
数据的节点为构成边数据的源节点;
将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构
成边数据的节点进行排列,包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全
部边数据连续排列,得到N个目标边数据块。
5.根据权利要求4所述的方法,其特征在于,在所述将所述N个初始
边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列之
后,所述方法还包括:
将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全
部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N
个目标边数据块。
6.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行
S11-S13,直至所述N个目标边数据块中的每个目的节点的节点数据均计算
完成;
S11:将所述N个目标边数据块中的第M个目标边数据块读入所述本地
内存,1≤M≤N,M为整数;
S12:依次对所述第M个目标边数据块中的每个目的节点的节点数据进
行计算,并根据计算结果更新该目的节点对应的第一目标数据,一个目的节
点对应的第一目标数据为该目的节点的节点数据或者该目的节点的节点数
据以及与该目的节点相连的全部边的权值;
S13:将M加1;
在对所述N个目标边数据块中的每个目的节点的节点数据均计算完成后,
执行下述方法:
判断所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数
据是否均收敛;
若所述N个目标边数据块中的每个目的节点对应的第一目标数据中的数据
均收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个目的节点对应的第一目标数据
中的任意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目
标边数据块开始,循环执行S11-S13,直至所述N个目标边数据块中的每个
目的节点对应的第一目标数据中的数据均收敛。
7.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行S21-S23,

\t直至所述N个目标边数据块中的每个源节点的节点数据均计算完成;
S21:将所述N个目标边数据块中的第M个目标边数据块读入所述本地内
存,1≤M≤N,M为整数;
S22:依次对所述第M个目标边数据块中的每个源节点的节点数据进行计
算,并根据计算结果更新该源节点对应的第二目标数据,一个源节点对应的第
二目标数据为该源节点的节点数据或者该源节点的节点数据以及与该源节点相
连的全部边的权值;
S23:将M加1;
在对所述N个目标边数据块中的每个源节点的节点数据均计算完成后,执
行下述方法:
判断所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据
是否均收敛;
若所述N个目标边数据块中的每个源节点对应的第二目标数据中的数据均
收敛,则结束计算过程;
若所述N个目标边数据块中的任意一个源节点对应的第二目标数据中的任
意一个数据不收敛,则继续从所述N个目标边数据块中的第1个目标边数据块
开始,循环执行S21-S23,直至所述N个目标边数据块中的每个源节点对应的
第二目标数据中的数据均收敛。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述图数据中的
全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,
在所述本地内存中更新该节点的节点数据。
9.根据权利要求1所述的方法,其特征在于,所述计算算法在对所述图
数据中的一个节点的节点数据进行计算的过程中,既需要使用该节点的入边
数据,也需要使用该节点的出边数据,所述构成边数据的节点为构成边数据
的源节点和目的节点。
10.一种处理图数据的装置,其特征在于,包括:
获取单元,用于获取图数据中的边数据和对所述图数据进行图计算的计
算算法;
确定单元,用于根据所述计算算法,确定对所述图数据中的边数据进行
分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的
边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/

\t或目的节点;
分割单元,用于根据所述分割算法和本地内存的内存容量,将所述图数
据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初
始边数据块的数据量均小于所述内存容量,N≥1,N为整数;
排列单元,用于将所述N个初始边数据块中的每个初始边数据块中的边数
据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
11.根据权利要求10所述的装置,其特征在于,所述计算算法在对所
述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的
出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构
成边数据的节点为构成边数据的目的节点;
所述排列单元具体用于:将所述N个初始边数据块中的每个初始边数据
块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
12.根据权利要求11所述的装置,其特征在于,所述排列单元还用于:
将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的
全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N
个目标边数据块。
13.根据权利要求10所述的装置,其特征在于,所述计算算法在对所
述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的
入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成
边数据的节点为构成边数据的源节点;
所述排列单元具体用于:将所述N个初始边数据块中的每个初始边数据块
中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
14.根据权利要求13所述的装置,其特征在于,所述排列单元还用于:
将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全
部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N
个目标边数据块。
15.根据权利要求11或12所述的装置,其特征在于,所述装置还包括计
算单元,用于:
从所述N个目标边数据块中的第1个目标边数据块开始,循环执行
S11-S13,直至所述N个目标边数据块中的每个目的节点的节点数据均计算
完成;
S11:将所述N个目标边数据块...

【专利技术属性】
技术研发人员:陈凯周异
申请(专利权)人:杭州华为数字技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1