2017-06-12 7 views
0

私はsparkとspark-graphxの新しいです。私は強く接続されたコンポーネントを実行しようとしましたが、私は接続されているトリプレットのみを取得しています。Spark-graphx-強く接続されたコンポーネント

私がここで探しているのは、強く接続されている(単一ノードを含む)すべての頂点(頂点のグループ)を得ることです。

例:強連結成分の

Vertex Edge description 

1  2  rule1 
1  3  rule1 
2  3  rule1 
3  4  rule1 
4  5  rule1 
5  6  rule1 
5  7  rule1 
9  10  rule2 
10  11  rule2 
10  12  rule2 

出力:

(1,2,3) - Rule1 
(4) - Rule1 
(5,6,7)- Rule1 
(9,10,11,12)- Rule2 

私は正しく使用する場合について説明信じて、あなたはさらに詳細が必要な場合は私に知らせてください。

最後に、1つのユーザー定義IDを強く接続された各グループに割り当てます。

私はPySparkを使用して、私はあなたの例を試してみた場合、おそらく私は、次のようにデータフレーム形式で出力が得られます

答えて

0

+---------------+ 
|id | component | 
+---+-----------+ 
|1 |rule1  | 
|2 |rule1  | 
|3 |rule1  | 
|4 |rule1  | 
|5 |rule1  | 
|6 |rule1  | 
|7 |rule1  | 
|9 |rule2  | 
|10 |rule2  | 
|11 |rule2  | 
|12 |rule2  | 
+---+-----------+ 

あなたが知っているかもしれませんが、PySparkはまだScalaのスクリプトを解釈するPythonのAPIです。なぜスカラが別の行で結果を出力するのか分かりません(おそらくmapReduceがアルゴリズムを並列に適用し、一度収束すると出力を出力するからです)。しかし、私は結果を集約し、1,2,3,4,5,6,7が強くつながっていて、ルール1のグループに属すると言うことができると思います。そして10,11,12はrule2に属します。

関連する問題