当前位置: 首页 > 专利查询>山东大学专利>正文

一种基于spark平台的内存迭代的重叠社区并行发现方法技术

技术编号:12351422 阅读:70 留言:0更新日期:2015-11-19 02:09
本发明专利技术公开了一种基于spark平台的内存迭代的重叠社区并行发现方法,步骤如下:在配置有spark环境的计算集群上,通过GraphX读取原始社区网络数据,构造图实例;通过GraphX并行计算出图实例中每个顶点的邻居节点的集合,作为图实例中每个顶点的属性;将图实例的每条边初始为一个社区,根据图实例的邻居节点的集合计算图实例中所有存在公共顶点的两条边之间的相似度;寻找相似度最大的两个社区,将这两个社区合并为新的社区;更新社区相似度集合;使用分割密度公式计算此次社区划分的分割质量;判断目前社区数量是大于1还是等于1,如果等于1,就获得分割质量最大的社区划分。

【技术实现步骤摘要】

本专利技术用来发现网络中的社区结果,具体涉及一种基于spark平台的内存迭代的 重叠社区并行发现方法。
技术介绍
复杂网络是复制系统的抽象,现实中许多复杂系统都可以用复杂网络的相关特性 进行描述和分析。网络中的节点表示系统中的个体,边表示个体之间的关系,如社会关系网 络,电力网等。 社区是复杂网络的一个子图,同一社区内的节点与节点之间连接很紧密,而社区 与社区之间的连接比较稀疏。 所谓社区发现是将图划分为多个确定数量的社区的集合。若任意两个社区的顶点 集合的交集均为空,则称此集合为非重叠社区,否则称为重叠社区。 早期的社区发现算法主要是针对非重叠社区。但是在现实的很多复杂系统中是存 在一个个体属于多个社区的情况,这些算法会将网络中属于多个社区的节点归结到一个社 区中。所以这些算法适应范围不广。 在重叠社区发现算法中,很多算法需要通过多次计算来获得最佳的社区数,计算 开销过大。通过将传统串行算法改造设计成高效并行算法,可以大幅提高效率。 可以通过hadoop MapReduce框架实现并行计算。但hadoop存在一些不足。Hadoop 的MapReduce模型并不适合描述复杂的数据处理过程。其次hadoop不支持内存迭代计算。 一次MapReduce过程结束将结果写到磁盘,迭代过程时,下一次输入数据需要再次从磁盘 中取出数据。 Spark是一个基于内存计算的开源集群计算系统,目的是更快速的进行数据分析, Spark提供了与Hadoop相似的开源集群计算环境,但基于内存和迭代优化的设计,Spark在 某些工作负载表现更优秀。Spark GraphX是Spark中用于图和图并行计算的API,跟其他 分布式图计算框架相比,GraphX最大的贡献是,在Spark之上提供一栈式数据解决方案,可 以方便且高效地完成图计算的一整套流水作业。
技术实现思路
本专利技术的目的就是为了解决上述问题,提供一种基于spark平台的内存迭代的重 叠社区并行发现方法,它可以解决大规模数据在单机上的计算瓶颈。 为了实现上述目的,本专利技术采用如下技术方案: -种基于spark平台的内存迭代的重叠社区并行发现方法,包括如下步骤: 步骤(1):在配置有spark环境的计算集群上,通过GraphX读取原始社区网络数 据,构造图实例; 步骤(2):通过GraphX并行计算出图实例中每个顶点的邻居节点的集合,作为图 实例中每个顶点的属性; 步骤(3):将图实例的每条边初始为一个社区,根据图实例的邻居节点的集合计 算图实例中所有存在公共顶点的两条边之间的相似度; 步骤(4):寻找相似度最大的两个社区,将这两个社区合并为新的社区; 步骤(5):更新社区相似度集合; 步骤(6):使用分割密度公式计算此次社区划分的分割质量; 步骤(7):判断目前社区数量是大于1还是等于1,若划分后的社区数量大于1,继 续步骤(4),如果等于1,就获得分割质量最大的社区划分。 所述步骤⑴步骤为: 在spark中,从Hadoop分布式文件系统中读入形式为边对的数据,例如每行数据 为a b,a和b代表两个节点,spark graphx接口根据边对构造对应的图实例graph,并保存 在内存中。 所述步骤(2)中,使用GraphX的mapReduceTriplets函数并行计算每个顶点的邻 居节点,所述mapReduceTriplets函数将用户定义的map函数作为输入,map输出为一个迭 代器,迭代器元素为key-value对,key值为对应的顶点id,value值自定义,并且将map作 用到每个triplet,并可以得到triplet上所有的顶点(或者两个,或者空)的信息。 步骤为: 步骤(21):每个Triplet并行计算用户定义的Map函数,Map函数参数为对应 Triplet的EdgeTriplet对象,Map函数计算生成一个迭代器,所述迭代器有两个元素,分别 为(a,b)和(b,a) ;a和b分别代表Triplet中的两个顶点; 步骤(22):每个Triplet并行将对应迭代器的元素发送到该元素第一个属性设定 的顶点; 步骤(23):每个顶点并行接收信息,对收到的信息集合使用Reduce函数统计信 息,从而计算出每个顶点的邻居节点集。 所述步骤⑶步骤为: 步骤(31):调用mapReduceTriplets函数,其中Map函数生成的迭代器中元素为 (a,(b,d))和(b,(a,c)),(a,(b,d))中a代表顶点ID,b为顶点ID相邻的顶点,d为顶点 b的属性,即步骤⑵计算的顶点的邻居节点集。Reduce函数为收集收到的信息。 步骤(32):此时每个顶点的属性为二元组集合,二元组由顶点的一个相邻顶点 和此相邻顶点的邻居节点集组成。Graph的顶点集合以RDD(Resilient Distributed Datasets,即弹性分布数据集)的形式存于内存中,调用RDD的map函数,对每个顶点并行 计算通过map函数的参数传入的函数。对顶点的属性二元组集合进行笛卡儿积计算,例如 顶点a的属性包括(a,(b,d)),(a,(c,e)),笛卡尔积后的结果为(a,b,a,c,e),e为边(a, b)和边(a,c)的相似度。 (a,b):ei代表由顶点a和b组成的边e丨,(a,c) :e2代表由顶点a和c组成的边 e2, e代表计算的边相似度。 步骤(33):获得顶点RDD中的笛卡儿积结果,保存为新的RDD,新的RDD元素形式 为步骤(32)的(a,b,a,c,e)类型。 至此,获得了所有存在公共顶点的边之间的相似度。所述步骤⑷步骤为: 并行遍历步骤(3)生成的新RDD,获取新RDD中相似度最大的元素集合,集合个数 大于等于1 ;将集合中每个元素(a,b,a,c,e)中所代表的两条边合并为新的社区。 所述步骤(5)步骤为: 步骤(51):并行遍历步骤(3)生成的边相似度RDD,过滤出边相似度RDD中需要更 新的元素集合,组成子RDD。过滤策略为若RDD中元素中某条边等于步骤(4)的元素集合中 某个元素的一条边,则保留此元素,否则过滤掉。 步骤(52):更新步骤(51)生成的子RDD的每个元素的相似度。 所述步骤(6)步骤为:计算每个社区的分割密度;对以社区为元素组成的RDD使 用map框架,然后计算整个网络的分割密度 步骤(32)的计算边相似度函数为 其中,e;#表顶点分别为i和k的一条边,e #代表顶点分别为j和k的一条边, n+⑴代表顶点i的邻居节点集合,n+(j)代表顶点j的邻居节点集合。 步骤(52)的更新边相似度函数为: Gjl和G j2为步骤⑷中找到的需要合并的两个社区; G,为两个社区合并后生成的新社区; Gi代表一个社区; m是对应下标的社区的边个数; mn为社区Gn的边个数,m]2为社区G]2的边个数; 步骤(6)的计算每个社区的分割密度公式为: 网络G中子图G。有m。条边,m。= |G」,n。为子图,G。中顶点个数。 步骤(6)的计算整个网络的分割密度的公式为:整个网络社区分割为{匕,G2,...,GJ,此分割的分割密度D是对所有子图的分割 密度根据边的加权平均值。 本专利技术的有益效果: 1.算法并行化:可以解决大规模数据在单机上的计算本文档来自技高网
...
一种基于spark平台的内存迭代的重叠社区并行发现方法

【技术保护点】
一种基于spark平台的内存迭代的重叠社区并行发现方法,其特征是,包括如下步骤:步骤(1):在配置有spark环境的计算集群上,通过GraphX读取原始社区网络数据,构造图实例;步骤(2):通过GraphX并行计算出图实例中每个顶点的邻居节点的集合,作为图实例中每个顶点的属性;步骤(3):将图实例的每条边初始为一个社区,根据图实例的邻居节点的集合计算图实例中所有存在公共顶点的两条边之间的相似度;步骤(4):寻找相似度最大的两个社区,将这两个社区合并为新的社区;步骤(5):更新社区相似度集合;步骤(6):使用分割密度公式计算此次社区划分的分割质量;步骤(7):判断目前社区数量是大于1还是等于1,若划分后的社区数量大于1,继续步骤(4),如果等于1,就获得分割质量最大的社区划分。

【技术特征摘要】

【专利技术属性】
技术研发人员:郭山清鲁宗飞崔立真许信顺刘士军王昌圆杨伯宇陶立冬田燕琛李文哲
申请(专利权)人:山东大学济南市公安局
类型:发明
国别省市:山东;37

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

1