2017-03-05 53 views
0

假設VertexID,我通過做所有直接連接的頂點到那個頂點?(IE,只有一個邊)一個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 ..但它仍然導致數組(集[長])

+0

哪個GraphX的版本您使用的?根據[API文檔](collectNeighborIds),'collectNeighborIds'返回一個'VertexRDD',它似乎沒有方法'lookup' ... – 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) 
相關問題