将列表中的一对元素分组
Group pair of elements in a List
我有一个列表(在 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 成一对,a 与 g 成一对,所以 (a,c,g) 是连通的。然后,c 也与 b 和 e 一起,b 与 a、d、f、k 一起,这些与其他对中的其他字符一起。我想把它们放在一个列表中。
我知道这可以通过 BFS 遍历来完成。但是想知道 Spark 中是否有一个 API 可以做到这一点?
我有一个列表(在 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 成一对,a 与 g 成一对,所以 (a,c,g) 是连通的。然后,c 也与 b 和 e 一起,b 与 a、d、f、k 一起,这些与其他对中的其他字符一起。我想把它们放在一个列表中。
我知道这可以通过 BFS 遍历来完成。但是想知道 Spark 中是否有一个 API 可以做到这一点?