Spark Review 11:組み込みのグラフアルゴリズム、PageRankアルゴリズム分析、シンプルなケース

1. PageRankアルゴリズムの説明:

1.1各頂点を1 / Nのページランキング値で初期化します。Nはグラフ内の頂点の総数です。

1.2ループ:
              各頂点は、出力エッジに沿って1 / MのPR値を送信します。ここで、Mは現在の頂点の出力次数です。

             各頂点が隣接する頂点から他の送信されたPR値を受信すると、これらのPR値の合計が現在の頂点の新しいPR値として使用されます。

             グラフの頂点のPRは、前の反復と比較して大幅に変化せず、反復は終了します。

2. PageRankアルゴリズムの場合:

package sparkGraphX

import org.apache.spark.graphx.{Graph, GraphLoader, VertexRDD}
import org.apache.spark.{SparkConf, SparkContext}

object pageRankTest {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("SimpleGraphX").setMaster("local")
    val sc = new SparkContext(conf)
    sc.setLogLevel("WARN")
    val graph: Graph[Int, Int] = GraphLoader.edgeListFile(sc,"D:/web.txt")
//  val web: VertexRDD[Double] = graph.pageRank(0.001).vertices   //动态调用 参数为收敛值
    val staticPage: VertexRDD[Double] = graph.staticPageRank(5).vertices  //静态调用 参数为迭代次数,第二个参数为resetProb: Double = 0.15为方法写死的值,不需要写即可。
    staticPage.collect.foreach(println(_)) //输出计算的结果

  }
}

 印刷結果:頂点のグラフィック表現:

                    

結果の分析:

2は度数が最も多いため、ランキング値が最も高く、頂点2の度数は1つだけであり、8であるため、値8は比較的高くなります。度数8は1で、度数1は度数が2つあり、ランキング値を広げます。等々。ランキング値係数の影響もあります。これは予備的なアプリケーションです。

元の記事を29件公開 55 件を賞賛 1491件を訪問

おすすめ

転載: blog.csdn.net/csdnliu123/article/details/105636761
おすすめ