graphx-pagerank

1.算法描述

graphx-pagerank_第1张图片
pagerank算法里面,要设置一个随机重置概率,主要为了解决顶点自循环和顶点没有出边造成的问题。

2.代码

import org.apache.spark.graphx.GraphLoader

import org.apache.spark.sql.SparkSession

object PageRankExample {
  def main(args: Array[String]): Unit = {
    // Creates a SparkSession.
    val spark = SparkSession
      .builder
      .appName(s"${this.getClass.getSimpleName}")
      .getOrCreate()
    val sc = spark.sparkContext

    // $example on$
    // Load the edges as a graph
    val graph = GraphLoader.edgeListFile(sc, "data/graphx/followers.txt")
    // Run PageRank
    val ranks = graph.pageRank(0.0001).vertices
    // Join the ranks with the usernames
    val users = sc.textFile("data/graphx/users.txt").map { line =>
      val fields = line.split(",")
      (fields(0).toLong, fields(1))
    }
    val ranksByUsername = users.join(ranks).map {
      case (id, (username, rank)) => (username, rank)
    }
    // Print the result
    println(ranksByUsername.collect().mkString("\n"))
    // $example off$
    spark.stop()
  }
}

3.保证收敛的确定性,可以设置最大迭代次数和tol值。如果全局中所有节点和上次比较,小于tol,则运算终止。

你可能感兴趣的:(spark,graphx)