2017-03-05 3 views
0

作成したグラフをすべての頂点にブロードキャストし、各頂点がこのグラフ上で独自の計算を実行して、ソース頂点としての最短パスを計算することができますか? java.lang.NullPointerExceptionGraphxのPregel Apiでグラフをブロードキャストしますか?

val result=graph.pregel(graph,Int.MaxValue,EdgeDirection.Out)((id, value, msg) => compute(msg,id),triplet => Iterator.empty,(a, b) => a) 
+1

データと予想される出力を含む再現可能な例を表示できますか? – mtoto

答えて

0

あなたが反復限界を持っているか、(一時的に)変更するノードへの最短経路を計算する場合を除き、それは次のようになります。いつも私が法の計算では、グラフにアクセスしようとすると、以下のコードは私を与えますorg.apache.spark.graphx.lib.ShortestPaths [1]の助けを借りてこれを計算し、各頂点でこれを呼び出す方がはるかに簡単です。

どちらの方法でも、このためのメモリ消費量は、中規模のグラフのみで吹き飛ばされます。あなたが本当に大きなクラスタを持っていたり、小さなグラフしかない限り、これは克服できない仕事になるでしょう。

設定に関する詳細情報を入力すると、回答が改善される可能性があります。

+0

私が正確にやりたいことは、betweenness centralityやすべてのペアの最短パスなどのアルゴリズムや、グラフの各頂点での計算が必要なアルゴリズムを仮定した場合、必ず(各頂点に対してv計算を行う) 。私はループのためにこれを1つのグラフ上で並列に実行したいと考えています。 – okm02

+0

しかし、その効率はタスクの並列分布内にあるので、スパークの最適化が本質的に緩くなります。 1つのグラフだけでこれを実行したい場合(短時間のパスは頂点属性としてパス長を持つ別のグラフを返します)、btwは不可能です。問題は、centralityとpageRankの両方に反復解があることを忘れているようで、ノードごとに異なるグラフはありません – dennlinger

関連する問題