diff --git a/nebula-algorithm/src/main/scala/com/vesoft/nebula/algorithm/lib/LouvainAlgo.scala b/nebula-algorithm/src/main/scala/com/vesoft/nebula/algorithm/lib/LouvainAlgo.scala index 99b17de..854b8a1 100644 --- a/nebula-algorithm/src/main/scala/com/vesoft/nebula/algorithm/lib/LouvainAlgo.scala +++ b/nebula-algorithm/src/main/scala/com/vesoft/nebula/algorithm/lib/LouvainAlgo.scala @@ -365,9 +365,8 @@ object CommUtil { // return the collections of communities def getCommunities(G: Graph[VertexData, Double]): RDD[Row] = { val communities = G.vertices - .map(x => { - Row(x._1, x._2.cId) - }) + .flatMapValues(_.innerVertices) + .map(value => { Row(value._2, value._1) }) communities } } diff --git a/nebula-algorithm/src/test/resources/edge_noWeight.csv b/nebula-algorithm/src/test/resources/edge_noWeight.csv new file mode 100644 index 0000000..c3a22ce --- /dev/null +++ b/nebula-algorithm/src/test/resources/edge_noWeight.csv @@ -0,0 +1,19 @@ +1 2 +1 7 +1 4 +2 0 +2 4 +2 5 +2 6 +3 0 +3 7 +4 0 +4 10 +5 7 +5 11 +6 7 +6 11 +8 9 +8 10 +8 11 +9 12 diff --git a/nebula-algorithm/src/test/scala/com/vesoft/nebula/algorithm/lib/LouvainAlgoSuite.scala b/nebula-algorithm/src/test/scala/com/vesoft/nebula/algorithm/lib/LouvainAlgoSuite.scala index 06aa3ed..293f26e 100644 --- a/nebula-algorithm/src/test/scala/com/vesoft/nebula/algorithm/lib/LouvainAlgoSuite.scala +++ b/nebula-algorithm/src/test/scala/com/vesoft/nebula/algorithm/lib/LouvainAlgoSuite.scala @@ -18,5 +18,13 @@ class LouvainAlgoSuite { val louvainConfig = new LouvainConfig(5, 2, 1.0) val louvainResult = LouvainAlgo.apply(spark, data, louvainConfig, false) assert(louvainResult.count() == 4) + + val dataWithoutWith = spark.read + .option("header", false) + .option("delimiter", " ") + .csv("src/test/resources/edge_noWeight.csv") + .select("_c0", "_c1") + val louvainResult1 = LouvainAlgo.apply(spark, dataWithoutWith, louvainConfig, false) + assert(louvainResult1.count() == 13) } }