我使用TITAN 0.4和gremlin進行遍歷。 我的要求是在圖中標識重複的頂點,併合並它們。 圖中有> 15 M個頂點。Gremlin:GroupBy頂點,計數> 1
gremlin> g.V.has('domain').groupBy{it.domain}{it.id}.cap
==>{google.com=[4], yahoo.com=[16, 24, 20]}
我能夠對頂點進行分組,但我只需要那些不止一次存在的域(頂點)。
在上面的例子中,我只需要返回==>{yahoo.com=[16, 24, 20]}
關鍵的「域」被索引,如果這有什麼區別的話。
請幫我在這裏
此解決方案以及在我的開發環境,但在生產中,我有10M +頂點,在此無法運行,引發異常如下: - 。 小鬼> gVhas(「IP_ADDRESS」)groupCount {it.ip_address} .cap.next()。findAll {it.value> 1} WARN com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx - 查詢需要迭代所有頂點[(ip_address <> null)]。爲了獲得更好的性能,請使用 –
的索引,這不是一個例外 - 只是警告您正在迭代所有頂點。或許我懷疑你的異常是'OutOfMemoryException'?無論哪種方式,這就是查詢的本質 - 它必須迭代所有頂點以在其上查找「domain」屬性到「groupCount」。如果你必須這樣做,並且你的圖很大,那麼(1)在這個問題上拋出更多的內存,或者(2)使用titan-hadoop或者(3)以某種方式重構你的圖以允許使用索引。 –
是的,我正在取消內存異常 分組步驟失敗,因爲TemporaryStorageException gremlin> gVhas('domain').groupCount {it.domain} .cap.next()。findAll {it.value> 1} WARN com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx - 查詢需要遍歷所有頂點[(domain <> null)]。爲了獲得更好的性能,請使用索引 引起的:com.thinkaurelius.titan.diskstorage.TemporaryStorageException:臨時存儲後端失敗 另外我在密鑰「域」中使用TITAN標準索引 g.makeKey(「domain」)。dataType( String.class).indexed(「standard」,Vertex.class).make(); –