2017-03-05 3 views
0

VertexIDが与えられていると、直に接続している頂点をすべて1つの頂点にしますか? collectNeighborsIdと次のコードを使用して検索:GraphX - どのように配列([VertexId、Array(VertexId)]をSet(VertexId)に変換するのですか?

val ID = 20 
val res = graph.collectNeighborIds(EdgeDirection.Out).lookup(ID) 

結果のクラスはArrayBuffer(アレイ(ロング)以下のようなものです:私はそれを変換する必要があり

ArrayBuffer(Array(10006, 10009, 10015, 10017, 10025, 10028, 10030, 10037, 10041, 10043, 10046, 10049, 10055, 10056, 10057, 10058, 10059, 10060, 10061, 10068, 10070, 10081, 10082, 10087, 10096, 10101, 10105, 10108, 10111, 10113, 10115, 10119, 10125, 10127, 10129, 10132, 10136, 10137, 10141, 10150, 10152, 10153, 10156, 10158, 10163, 10166, 10167, 10171, 10172, 10173, 10175, 10183, 10186, 10187, 10192, 10193, 10197, 10198, 10201, 10209, 10212, 10213, 10214, 10223, 10226, 10228, 1367, 1654, 1670, 2034, 2146, 2481, 58776, 58778, 58788, 58789)) 

をするだけでセット[ロング] .. 私はちょうどtoSetを使ってそれを変換しようとしましたが、それでもArray(Set [Long])になります

+0

GraphXのバージョンを使用していますか? [API docs](collectNeighborIds)によると、 'collectNeighborIds'は' lookup'メソッドを持たない 'VertexRDD'を返します。 – davidrpugh

答えて

0

使用flatten

scala> val a: Array[Array[Long]] = Array(Array(1, 2), Array(3, 4)) 
a: Array[Array[Long]] = Array(Array(1, 2), Array(3, 4)) 

scala> a.flatten.toSet 
res1: scala.collection.immutable.Set[Long] = Set(1, 2, 3, 4) 
関連する問題