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

文档序号:9911122阅读:来源:国知局
一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
[0050]所述处理器具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
[0051]该可选的方法,由于对应同一源节点的全部边数据在一个目标边数据块中、且对应该源节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该源节点的出边数据,提高图计算的效率。
[0052]进一步的,所述处理器还用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
[0053]可选的,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
[0054]需要说明的是,由于在计算的过程中会频繁的用到各个节点的节点数据,因此,可以将节点数据存储在本地内存中,当节点数据变化时,直接在本地内存中进行更新,在下次计算时,使用更新后的节点数据,待计算完成后,将节点数据写入磁盘中。这样一来,可以避免反复地在磁盘中读写节点数据,进一步提高图计算的效率。
[0055]本发明实施例提供的方法及装置,在获取图数据中的边数据和对该图数据进行图计算的计算算法之后,根据计算算法和本地内存的内存容量对图数据中的边数据进行分割得到N个初始边数据块,并对N个初始边数据块按照构成边数据的节点进行排列,得到N个目标边数据块,目标边数据块能够适应计算算法,使得计算机采用计算算法在对一个目标边数据块中的节点的节点数据进行计算的过程中,不需要花费过多的时间在数据的重新整理(例如,对目标边数据块中的边数据的重新排序)上,与现有技术相比,能够提高图计算的效率。
【附图说明】
[0056]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0057]图1为本发明实施例提供的一种图的组成示意图;
[0058]图2为现有技术中的多个边数据块的示意图;
[0059]图3为本发明实施例提供的一种处理图数据的方法的流程图;
[0060]图4为本发明实施例提供的多个边数据块的示意图;
[0061 ]图5为本发明实施例提供的多个边数据块的示意图;
[0062]图6为本发明实施例提供的一种处理图数据的装置的结构示意图;
[0063]图7为本发明实施例提供的又一种处理图数据的装置的结构示意图;
[0064]图8为本发明实施例提供的又一种处理图数据的装置的结构示意图。
【具体实施方式】
[0065]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0066]本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/SB,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中字符V”,一般表示前后关联对象是一种“或”的关系。本文中的“多个”是指两个或者两个以上。
[0067]首先,在对本发明实施例的技术方案进行详细描述之前,需要说明的是,本发明实施例中的图包括多个节点以及连接各个节点的边,相应的,图数据包括各个节点的节点数据以及连接各个节点的边的边数据,一条边的边数据包括构成该条边的源节点、目的节点以及该条边的权值,对于一个节点来说,本身并没有源节点或者目的节点之分,但是,当一个节点与边联系起来时,为了表示边的方向,节点就有了源节点和目的节点之分,显然的,一个节点是源节点还是目的节点取决于边的方向。示例性的,图1示出了一种图,针对该图的图数据包括节点1、节点2和节点3的节点数据以及边1、边2和边3的边数据,其中,节点I为边I的源节点和边3的目的节点,节点2为边I和边2的目的节点,节点3为边2和边3的源节点。
[0068]为了更加清楚的对本发明实施例提供的方法进行描述,以GraphChi为例,将现有技术中的对图数据中的边数据进行处理的方法进行说明。在GraphChi中,计算机按照目的节点的ID由小至大的顺序将图数据中的边数据分为多个边数据块,对应同一目的节点的全部边数据被分割在一个边数据块中,一个边数据块中包含至少一个边数据,一个边数据块中包含对应一个或多个目的节点的全部边数据,每个边数据块中的边数据又按照边数据对应的源节点的ID由小至大顺序排列。
[0069]示例性的,如图2所示,图2为对图数据中的边数据进行处理之后得到的3个边数据块,每个边数据块中src代表源节点,dst代表目的节点,Value代表连接源节点与目的节点的边的权值,例如,边数据块I中的value—列的第一个值0.273代表源节点为I,目的节点为2的边的权值,其他值的含义类似。边数据块I包含对应目的节点I和目的节点2的全部边数据,边数据块2包含对应目的节点3和目的节点4的全部边数据,边数据块3包含对应目的节点5和目的节点6的全部边数据,每个边数据块中的边数据又以边数据对应的源节点的ID由小至大顺序排列(如图2所示,每个边数据块中的src—列的数字是递增的)。
[0070]本发明实施例提供一种处理图数据的方法,如图3所示,包括:
[0071]301、获取图数据中的边数据和对所述图数据进行图计算的计算算法。
[0072]本发明实施例的执行主体可以为计算机,本发明实施例提供的方法具体可以用于在单机图计算处理平台中进行单机图计算,或者在分布式大数据处理平台中进行分布式图计算。
[0073]具体的,计算机可以接收其他计算机或设备发送的图数据,也可以获取用户手动存储的图数据,还可以通过其他方式获取图数据,在获取到图数据之后,根据图数据获取图数据中的边数据。
[0074]示例性的,对图数据进行图计算的计算算法可以为广度优先搜索(BreadthFirstSearch,简称BFS)、单源最短路径(Single-Source Shortest Paths,简称SSP)、PageRank(网页排名)、交替最小二乘法(Alternating Least Squares,简称ALS)以及TriangleCounting (数三角形)等算法。
[0075]302、根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点。
[0076]其中,不同的计算算法可以对应不同的分割算法,当采用某一计算算法在对图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,则分割算法为根据构成边数据的目的节点对图数据中的边数据进行分割的算法;当该某一计算算法在对图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,则分割算法为根据构成边数据的源节点对图数据中的边数据进行分割的算法;当该某一计算算法在对图数据中的一个节点的节点数据进行计算的过程中,既需要使用该节点的出边数据也需要使用该节点的入边数据,则分割算法为根据构成边数据的源节点和目的节点对图数据中的边数据进行分割的算法。
[0077]其中,一个节点的入边数据是指源节点为其他节点,目的节点为该节点的边数据,一个节点的出边数据是指源节点为该节点,目的节点为其他节点的边数据。例如,图2中的边数据块I中的第一个边数据为节点I的出边数据,节点2的入边数据。
[0078]示例性的,当计算算法为BFS算法或SSP算法时,分割算法为根据构成边数据的源节点对图数据中的边数据进行分割的算法,当计算算法为PageRank算法或ALS算法时,分割算法为根据构成边数据的目的节点对图数据中的边数据进行分割的算法,当计算算法为TriangleCounting算法时,分割算法为根据构成边数据的源节点和目的节点对图数据中的边数据进行分割的算法。
[0079]303、根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,I,N为整数。
[0080]需要说明的是,在使用单个计算机进行图计算时,由于单个计算机的本地内存的内存容量有限,当需要计算的图数据的数据量超过该内存容量时,需要将图数据中的边数据进行分割得到多个初始边数据块,每个初始边数据块的数据量都小于该单个计算机的本地内存的内存容量。
[0081 ] 304、将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
[0082]在步骤304之后,该方法还包括:将所述N个目标边数据块存储到持久性存储介质中。
[0083]本发明实施例中提到的本地内存指本发明实施例提供的方法的执行主体的内存,本发明实施例中提到的持久性存储介质指本发明实施例提供的方法的执行主体的持久性存储介质,持久性存储介质可以为磁盘或硬盘等。
[0084]本发明实施例提供的方法,在获取图数据中的边数据和对该图数据进行图计算的计算算法之后,根据计算算法和本地内存的内存容量对图数据中的边数据进行分割得到N个初始边数据块,并对N个初始边数据块按照构成边数据的节点进行排列,得到N个目标边数据块,目标边数据块能够适应计算算法,使得计算机采用计算算法在对一个目标边数据块中的节点的节点数据进行计算的过程中,不需要花费过多的时间在数据的重新整理(例如,对目标边数据块中的边数据的重新排序)上,与现有技术相比,能够提高图计算的效率。
[0085]需要说明的是,在一种应用场景下,计算机在对图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,该情况下,本发明实施例提供的方法还可以包括以下多种可选的方法。
[0086]可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
[0087]步骤304可以包括:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
[0088]该情况下,计算机在将一个目标边数据块读入本地内存后,依次对该目标边数据块中的目的节点的节点数据进行计算。由于对应同一目的节点的全部边数据在一个目标边数据块中、且对应该目的节点的全部边数据在该目标边数据块中连续排列,因此,计算机不需要再将目标边数据块中的边数据重新排序,可以节约时间,提高图计算的效率。
[0089]示例性的,基于图2所述的示例中的边数据,本发明实施例提供的方法在采用分割
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1