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

文档序号:9911122阅读:351来源:国知局
一种处理图数据的方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据挖掘技术领域,尤其涉及一种处理图数据的方法及装置。
【背景技术】
[0002]在大数据挖掘时代,图不仅可以直接描述计算机科学、化学以及生物信息学等领域的许多现实应用,例如社交网络、web(网页)图、化学物质以及生物结构等,同时也可以用来描述各种数据挖掘算法,例如矩阵分解或最短路径等等。其中,图包括多个节点以及连接各个节点的边,图数据包括各个节点的节点数据以及连接各个节点的边的边数据,一条边的边数据包括构成该条边的源节点、目的节点和该条边的权值。在单机图计算处理平台(即采用单个计算机进行图计算的处理平台)中,由于单个计算机的本地内存的内存容量有限,当需要计算的图数据的数据量超过该内存容量时,需要对图数据中的边数据进行处理,得到多个边数据块,一个边数据块包括一个或多个边数据。
[0003]目前,在对图数据中的边数据进行处理时,采用固定的方法,使得计算机在对一个边数据块中的节点的节点数据进行计算时,若无法直接获取与该节点相关的边数据,则需要对该边数据块中的边数据的排列顺序进行调整才可以得到需要的边数据。例如,在GraphChi (—种单机图计算处理平台)中,由于在图计算时是以目的节点为中心的计算模式,因此,计算机按照目的节点的ID(标识)由小至大的顺序将图数据中的边数据分割为多个边数据块(在GraphChi中称为Shard),对应同一目的节点的全部边数据被分割在一个边数据块中,为了顺序更新节点数据,每个边数据块中的边数据又按照边数据对应的源节点的ID由小至大顺序排列。该情况下,在计算机将一个边数据块读入本地内存之后,需要获取该边数据块中的多个目的节点的全部入边数据(即源节点为其他节点,目的节点为该节点的边数据)和全部出边数据(即源节点为该节点,目的节点为其他节点的边数据),以便依次对该边数据块中的多个目的节点的节点数据进行计算,为了快速的获取目的节点的全部入边数据,需要将该边数据块中的边数据按照目的节点的ID由小至大的顺序重新排序,而重新排序的过程耗时较长,使得图计算的效率较低。

【发明内容】

[0004]本发明的实施例提供一种处理图数据的方法及装置,用于提高图计算的效率。
[0005]为达到上述目的,本发明的实施例采用如下技术方案:
[0006]第一方面,提供一种处理图数据的方法,包括:
[0007]获取图数据中的边数据和对所述图数据进行图计算的计算算法;
[0008]根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
[0009]根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N 2 I,N为整数;
[0010]将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
[0011]可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
[0012]将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,包括:
[0013]将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
[0014]该可选的方法,由于对应同一目的节点的全部边数据在一个目标边数据块中、且对应该目的节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该目的节点的入边数据,提高图计算的效率。
[0015]进一步的,在所述将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列之后,所述方法还包括:
[0016]将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
[0017]可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
[0018]将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,包括:
[0019 ]将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
[0020]该可选的方法,由于对应同一源节点的全部边数据在一个目标边数据块中、且对应该源节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该源节点的出边数据,提高图计算的效率。
[0021]进一步的,在所述将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列之后,所述方法还包括:
[0022 ]将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
[0023]可选的,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
[0024]需要说明的是,由于在计算的过程中会频繁的用到各个节点的节点数据,因此,可以将节点数据存储在本地内存中,当节点数据变化时,直接在本地内存中进行更新,在下次计算时,使用更新后的节点数据,待计算完成后,将节点数据写入磁盘中。这样一来,可以避免反复地在磁盘中读写节点数据,进一步提高图计算的效率。
[0025]第二方面,提供一种处理图数据的装置,包括:
[0026]获取单元,用于获取图数据中的边数据和对所述图数据进行图计算的计算算法;
[0027]确定单元,用于根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
[0028]分割单元,用于根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,I,N为整数;
[0029]排列单元,用于将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
[0030]可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
[0031]所述排列单元具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
[0032]该可选的方法,由于对应同一目的节点的全部边数据在一个目标边数据块中、且对应该目的节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该目的节点的入边数据,提高图计算的效率。
[0033]进一步的,所述排列单元还用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
[0034]可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同一源节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的源节点;
[0035]所述排列单元具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据连续排列,得到N个目标边数据块。
[0036]该可选的方法,由于对应同一源节点的全部边数据在一个目标边数据块中、且对应该源节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该源节点的出边数据,提高图计算的效率。
[0037]进一步的,所述排列单元还用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一源节点的全部边数据按照该全部边数据的目的节点由小至大或由大至小顺序排列,得到N个目标边数据块。
[0038]可选的,所述图数据中的全部节点的节点数据存储在所述本地内存中,当一个节点的节点数据变化时,在所述本地内存中更新该节点的节点数据。
[0039]需要说明的是,由于在计算的过程中会频繁的用到各个节点的节点数据,因此,可以将节点数据存储在本地内存中,当节点数据变化时,直接在本地内存中进行更新,在下次计算时,使用更新后的节点数据,待计算完成后,将节点数据写入磁盘中。这样一来,可以避免反复地在磁盘中读写节点数据,进一步提高图计算的效率。
[0040]第三方面,提供一种处理图数据的装置,包括:存储器和处理器,所述存储器中用于存储一组代码,所述处理器根据该代码执行以下动作:
[0041]获取图数据中的边数据和对所述图数据进行图计算的计算算法;
[0042]根据所述计算算法,确定对所述图数据中的边数据进行分割的分割算法,所述分割算法为根据构成边数据的节点对所述图数据中的边数据进行分割的算法,所述构成边数据的节点为构成边数据的源节点和/或目的节点;
[0043]根据所述分割算法和本地内存的内存容量,将所述图数据中的边数据分割为N个初始边数据块,所述N个初始边数据块中的每个初始边数据块的数据量均小于所述内存容量,N 2 I,N为整数;
[0044]将所述N个初始边数据块中的每个初始边数据块中的边数据按照所述构成边数据的节点进行排列,得到N个目标边数据块。
[0045]可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的出边数据,对应同一目的节点的全部边数据在一个初始边数据块中,所述构成边数据的节点为构成边数据的目的节点;
[0046]所述处理器具体用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据连续排列,得到N个目标边数据块。
[0047]该可选的方法,由于对应同一目的节点的全部边数据在一个目标边数据块中、且对应该目的节点的全部边数据在该目标边数据块中连续排列,因此,能够快速的获取该目的节点的入边数据,提高图计算的效率。
[0048]进一步的,所述处理器还用于:将所述N个初始边数据块中的每个初始边数据块中的对应同一目的节点的全部边数据按照该全部边数据的源节点由小至大或由大至小顺序排列,得到N个目标边数据块。
[0049]可选的,所述计算算法在对所述图数据中的一个节点的节点数据进行计算的过程中,不需要使用该节点的入边数据,对应同
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1