私はリストを持っています(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")))
特定統計情報の2番目の要素でグループ化し、結果を1つのリストにまとめます。 1に任意のペア内の他の要素に接続されている
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))
さて、私がやろうとしていることは、「グループ」のすべての要素(ないペア)です。出力は次のようになります
val checkItOut = seqRDD.groupBy(each => (each._2))
.map(each => each._2.toList)
.collect
.flatten
.toList
リスト。 例: cは1つのペアにaがあり、aにはgがあり、したがって(a、c、g)が接続されています。次に、cはbとeも持ち、bはa、d、f、kであり、これらは他のいくつかの対の中で他の文字と同じです。私はそれらをリストに入れたい。
これはBFSトラバーサルで行うことができます。これを行うSparkにAPIがあるのだろうか?
あなたはGraphX、connectedComponentsを探しています: – Traian
あなたは 'groupWith'でこれを行うことができます - 私は別の質問のために書いた何か。このグループの既存のメンバーと述語が一致する場合は、グループに要素を追加します。http://stackoverflow.com/a/35919875/21755 –