2017-06-12 67 views
0

我目前在hadoop環境中使用janusGraph。 我已經將大量的頂點加載到圖中(大約五十萬),並獲得了主鍵運行的索引。 迭代每個頂點大約需要3分鐘。 我目前在我的圖中有0條邊。訪問邊而不迭代頂點

爲了加載我的圖形邊緣,我正在讀出一個包含數據的csv文件。 由於我有時面臨超時(因爲環境),我一直在尋找頂點數,然後跳到csv中的正確行,重新開始加載。

然而,要求邊緣的計數與我的edge-csv-file一樣需要大約4分鐘,併爲我的tinkerpopserver產生一個超時。

有沒有一種方法可以在不重複每個頂點的情況下得到圖中邊的總數?

添加邊緣本身工作正常,因爲頂點的組合索引相當快。

回答

1

graph.traversal().E().count()應該工作。

+0

其實它沒有。 Hbase所花費的時間和我的讀數都表示,它首先迭代所有頂點。還有g.E()。has('myIndexedProperty')。count()在任何方面都不會更快。似乎通過遍歷首先需要遍歷所有頂點。 – TApplis

+0

https://github.com/JanusGraph/janusgraph/issues/284'has(key)'不使用索引。您需要添加具有共同價值的公共屬性以利用索引。 – pantalohnes

2

鑑於JanusGraph g.E()存儲邊緣的方式將基本上迭代所有頂點以獲取邊緣,因此獲取計數的操作並不多。值得注意的是,迭代邊是一個特定於圖的問題,所以其他圖可能會有不同的表現。例如,TinkerGraph用一種完全繞過迭代的策略處理計數。