1

次のようなテキストファイルがあります。

1    3
2    5
3    6
4    5
5    4
6    1
7    2

上記のファイルは、無向グラフのエッジを表しています。グラフ内の重複したエッジを削除したい。上記の例では4,5 or 5,4、グラフ内の同じエッジを表しているため、重複を引き起こすため、どちらかを削除したいと考えています。Apache SparkGraphstreamのライブラリを使用して、ファイルからグラフを視覚化しようとしています。GraphXただし、上記で説明したように重複ノードが存在するため、次のようなエラーが発生します

org.graphstream.graph.EdgeRejectedException: Edge 4[5--4] was rejected by node 5

このような重複をテキスト ファイルから削除するにはどうすればよいでしょうか?

4

1 に答える 1

2

convertToCanonicalEdgesからメソッドを使用できますGraphOps。これ

  • 双方向エッジを単方向エッジに変換します。
  • srcIds が dstIds よりも小さくなるようにエッジの頂点 ID を書き換え、複製されたエッジをマージします

あなたの場合:

val graph = Graph.fromEdgeTuples(sc.parallelize(
  Seq((1, 3), (2, 5), (3, 6), (4, 5), (5, 4), (6, 1), (7, 2))), -1)

graph.convertToCanonicalEdges().edges.collect.foreach(println)

結果:

Edge(3,6,1)
Edge(1,6,1)
Edge(1,3,1)
Edge(2,5,1)
Edge(2,7,1)
Edge(4,5,1)
于 2016-10-29T17:02:25.570 に答える