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().tAppName("SimpleGraphX").tMaster("local")
val sc = new SparkContext(conf)
sc.tLogLevel("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 urs = sc.textFile("D:/").map { line =>
val fields = line.split(",")
(fields(0).toLong, fields(1))
}
val ccByUrname = urs.join(cc).map {
ca (id, (urname, cc)) => (urname, 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对图形
进⾏分区。
案例:
e you laterpackage sparkGraphX
import org.aphx.{GraphLoader, PartitionStrategy}
import org.apache.spark.{SparkConf, SparkContext}
48个英语音标发音object TriangleCounting {唐顿庄园圣诞特辑
def main(args: Array[String]): Unit = {
val conf = new SparkConf().tAppName("SimpleGraphX").tMaster("local")
val sc = new SparkContext(conf)
昆明会计培训班sc.tLogLevel("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 urs = sc.textFile("D:/").map { line =>fmea是什么意思
val fields = line.split(",")
every single day(fields(0).toLong, fields(1))
}
val triCountByUrname = urs.join(triCounts).map { ca (id, (urname, tc)) =>
(urname, tc)
}
// Print the result
llect().mkString("\n"))
}
}
结果: 顶点图:
headcounts
结果解析:Triangle Counting算法找出图中的三⾓形,如图点4,不与其他点构成三⾓形所以为0,⽽1,2,8与6,3,7都构成三⾓形所以值为1 。
digital