在Gremlin中寻找异常值以找到大于N条边的节点?



我想弄清楚如何在我们的图表中找到异常值。特别是有超过N条边的节点N可以是一个很大的数。我们的图有超过20亿个节点。是否有有效的方法来做到这一点?

在这种规模下,您可能想要多线程查询并批量向服务器发送请求。对于客户机线程来说,一个较好的近似值是服务器上vCPU数量的2倍。如果你能发送的id列表将是最有效的。否则你需要做很多range步骤。然后,每个线程将执行以下操作,以查询多组ID范围:

g.V(<list of IDs>).filter(out().count().is(gt(x)))

然后收集应用程序中的所有异常值。我认为你应该把它当作一个批处理任务来处理,可能需要一段时间才能完成。

另一种选择是使用Neptune Export导出图形并将其加载到Spark中,并使用GraphFrames之类的东西运行degree查询。

对于一个相当大的实例,我认为使用多线程的技术是可以工作的,特别是如果你能够很容易地在每个查询中生成你正在寻找的顶点id列表。将查询分散在多个读副本上也会加快速度。

最新更新