1

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)

結論として、同じ出力が必要ですが、スパーク環境で実行されます。さらに、キーマッピングなどの隣接関係に関する情報を保持し、キーなどで削減するより効率的な方法を探しています。スパーク環境では、各問題 (ビッグデータ操作) にアプローチするためにまったく異なる方法が必要になるため、考え方を説明し、使用した機能について簡単に説明していただければ幸いです。

ありがとうございました。

4

0 に答える 0