我有一个列表(在Scala中)。
val seqRDD = sc.parallelize(Seq(("a","b"),("b","c"),("c","a"),("d","b"),("e","c"),("f","b"),("g","a"),("h","g"),("i","e"),("j","m"),("k","b"),("l","m"),("m","j")))
我按特定统计数据的第二个元素进行分组,并将结果展平为一个列表。
val checkItOut = seqRDD.groupBy(each => (each._2))
.map(each => each._2.toList)
.collect
.flatten
.toList
输出如下:
checkItOut: List[(String, String)] = List((c,a), (g,a), (a,b), (d,b), (f,b), (k,b), (m,j), (b,c), (e,c), (i,e), (j,m), (l,m), (h,g))
现在,我要做的是" group"连接到任何一对中的其他元素到一个列表的所有元素(不是对)。 例如: c是一对中的a,下一个是g,所以(a,c,g)是连接的。然后,c也是b和e,b是a,d,f,k,这些与其他一对中的其他字符有关。我希望将它们列入清单。
我知道这可以通过BFS遍历来完成。不知道Spark中是否有API可以做到这一点吗?
答案 0 :(得分:0)
GraphX,Connected Components:http://spark.apache.org/docs/latest/graphx-programming-guide.html#connected-components