10

通过 Gremlin 计算大型图中节点/边数的最简单和最有效的方法是什么?我发现的最好的方法是使用 V 迭代器:

gremlin> g.V.gather{it.size()}

但是,根据V的文档,这对于大图来说不是一个可行的选择:

图的顶点迭代器。利用它来遍历图中的所有顶点。除非与键索引查找结合使用,否则请谨慎使用大型图。

4

1 回答 1

10

我认为计算所有顶点的首选方法是:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.V.count()
==>6
gremlin> g.E.count()
==>6

不过,我认为g.V/E无论你做什么,在一个非常大的图表上都会崩溃。在非常大的图表上,进行计数的最佳选择是使用 Faunus(http://thinkaurelius.github.io/faunus/)之类的工具,这样您就可以利用 Hadoop 的强大功能并行进行计数。

更新:上面的原始答案是针对 TinkerPop 2.x。对于 TinkerPop 3.x,答案基本相同,意味着使用Gremlin Spark或某些提供者特定的工具(如DataStax Graph 的DSE GraphFrames),这些工具经过优化以执行此类大规模遍历。

于 2013-06-20T15:52:30.027 回答