【发布时间】:2013-06-17 09:18:19
【问题描述】:
通过 Gremlin 计算大型图中节点/边数的最简单和最有效的方法是什么?我发现最好的是使用 V 迭代器:
gremlin> g.V.gather{it.size()}
但是,根据documentation for V,这对于大图来说不是一个可行的选择:
图的顶点迭代器。利用它来遍历所有 图中的顶点。除非使用,否则在大图上小心使用 结合键索引查找。
【问题讨论】:
标签: gremlin
通过 Gremlin 计算大型图中节点/边数的最简单和最有效的方法是什么?我发现最好的是使用 V 迭代器:
gremlin> g.V.gather{it.size()}
但是,根据documentation for V,这对于大图来说不是一个可行的选择:
图的顶点迭代器。利用它来遍历所有 图中的顶点。除非使用,否则在大图上小心使用 结合键索引查找。
【问题讨论】:
标签: gremlin
我认为计算所有顶点的首选方法是:
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),这些工具经过优化以执行此类大规模遍历。
【讨论】:
getRawGraph() 获取底层图来访问它。