package spark1 import org.apache.spark.{SparkConf, SparkContext} object test { def main(args: Array[String]): Unit = { val nums = 2 val conf = new SparkConf().setAppName("PageRank").setMaster("local") val sc = new SparkContext(conf) val links = sc.parallelize(Array(('A', Array('D')), ('B', Array('A')), ('C', Array('A', 'B')), ('D', Array('A', 'C')))).cache() var ranks = sc.parallelize(Array(('A', 1.0), ('B', 1.0), ('C', 1.0), ('D', 1.0))) for (i <- 1 to nums) { val contribs = links.join(ranks).flatMap({ case (url, (links, rank)) => links.map(dest => (dest, rank / links.size)) }) ranks = contribs.reduceByKey(_+_).mapValues(0.15+0.85*_) } ranks.foreach(println) } } (B,0.394375) (A,1.3081249999999998) (C,0.575) (D,1.7224999999999997)