Spark と Scala を使用してデータ分析を開始しようとしています。私の質問は、グラフで三角形を取得するにはどうすればよいですか? そして、graphx に付属する三角形の数ではなく、三角形を構成する実際のノードを意味します。
グラフ ファイルがあるとします。三角形を scala で計算できましたが、RDD 操作を使用する必要があるため、spark では同じ手法は適用されません。
関数に渡すデータは、src とそのソースの宛先のリストで構成される複雑なリストです。元。Adj(5, リスト(1,2,3)), Adj(4, リスト(9,8,7)), ...
私のscalaバージョンはこれです:
(Paths: List[Adj])
Paths.flatMap(i=> Paths.map(j => Paths.map(k => {
if(i.src != j.src && i.src!= k.src && j.src!=k.src){
if(i.dst.contains(j.src) && j.dst.contains(k.src) && k.dst.contains(i.src)){
println(i.src,j.src,k.src) //3 nodes that make a triangle
}
else{
()
}
}
})))
出力は次のようになります。
(1,2,3) (4,5,6) (2,5,6)
結論として、同じ出力が必要ですが、スパーク環境で実行されます。さらに、キーマッピングなどの隣接関係に関する情報を保持し、キーなどで削減するより効率的な方法を探しています。スパーク環境では、各問題 (ビッグデータ操作) にアプローチするためにまったく異なる方法が必要になるため、考え方を説明し、使用した機能について簡単に説明していただければ幸いです。
ありがとうございました。