Spark内置算法:ConnectedComponents算法解析及案例和Triangle。。。

Spark内置算法:ConnectedComponents算法解析及案例和
Triangle。。。
1.Connected Components
含义:连通分量算法⽤图的最低编号顶点的ID标记图的每个连通分量。例如,在社交⽹络中,连接的组件可以近似于集。
案例:
package sparkGraphX
import org.aphx.{GraphLoader, VertexId, VertexRDD}高瓦纸
import org.apache.spark.{SparkConf, SparkContext}
object connectionTest {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("SimpleGraphX").setMaster("local")
val sc = new SparkContext(conf)
sc.setLogLevel("WARN")
// Load the graph as in the PageRank example
val graph = GraphLoader.edgeListFile(sc, "D:/")
// Find the connected components
val cc: VertexRDD[VertexId] = tedComponents().vertices
真空吸砂机//下⾯的代码就是将顶点的名称与编号建⽴对应关系,最后将顶点名称与值打印出来。
val users = sc.textFile("D:/").map { line =>
val fields = line.split(",")
(fields(0).toLong, fields(1))
}
val ccByUsername = users.join(cc).map {
case (id, (username, cc)) => (username, cc)
}午睡宝
// Print the result
llect().mkString("\n"))
}
}
结果:                                                                  顶点图:
解析:Connected Components算法可以出孤⽴的点。从结果可知,图分为两部分。1,4,8,2⼀组。6,3,7⼀组。
2.Triangle Counting
含义:当⼀个顶点有两个相邻的顶点之间有⼀条边时,它就是三⾓形的⼀部分。GraphX在TriangleCount对象中实现了⼀个三⾓形计数算法,该算法确定通过每个顶点的三⾓形数,从⽽提供了聚类的度量。注意,三⾓形计数要求边处于规范⽅向(srcId<dstId),并使⽤graph.partitionBy对图形
进⾏分区。
案例:
package sparkGraphX
import org.aphx.{GraphLoader, PartitionStrategy}
import org.apache.spark.{SparkConf, SparkContext}
object TriangleCounting {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("SimpleGraphX").setMaster("local")
val sc = new SparkContext(conf)
sc.setLogLevel("WARN")
// Load the edges in canonical order and partition the graph for triangle count
val graph = GraphLoader.edgeListFile(sc, "D:/", true)
.partitionBy(PartitionStrategy.RandomVertexCut)
// Find the triangle count for each vertex
val triCounts = iangleCount().vertices
//下⾯的代码就是将顶点的名称与编号建⽴对应关系,最后将顶点名称与值打印出来。
val users = sc.textFile("D:/").map { line =>
val fields = line.split(",")
权重计算方法
(fields(0).toLong, fields(1))
远距离遥控器}
val triCountByUsername = users.join(triCounts).map { case (id, (username, tc)) =>
(username, tc)
}
// Print the result
llect().mkString("\n"))
}
}
结果:                                                                    顶点图:
乳化石蜡
结果解析:Triangle Counting算法出图中的三⾓形,如图点4,不与其他点构成三⾓形所以为0,⽽1,2,8与6,3,7都构成三⾓形所以值为1 。

本文发布于:2024-09-25 06:20:09,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/191743.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   顶点   编号   名称   计数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议