从gremlin-python直接查询gremlin

时间:2018-10-05 18:29:44

标签: gremlin gremlin-server

我遇到了gremlin-python的几个问题,这些问题在纯gremlin中并非如此:

  • 如果不迭代所有顶点(g.V()。hasLabel('customer')),就无法直接选择给定的顶点类型(g.V('customer'))
  • 我从Python收到“达到最大递归”错误。 gremlin中的同一查询工作流畅,快速
  • 在gremlin-python中,“。next()”命令的运行速度非常慢,而在gremlin中则需要1秒钟。

因此,我希望能够从Python / gremlin-python对服务器进行纯gremlin查询,并将其结果直接存储在Python变量中。有可能吗?

(如果重要的话,我正在Apache Zeppelin上使用gremlin-python)

1 个答案:

答案 0 :(得分:3)

  

如果不迭代所有顶点(g.V()。hasLabel('customer')),就无法直接选择给定的顶点类型(g.V('customer'))

g.V('customer')在Gremlin中的意思是“查找id为'customer'的顶点”,而不是“查找标签为'customer'的顶点。对于后者,您需要编写g.V().hasLabel('customer')。这些规则是在包括Python在内的Gremlin的每个变体中都相同。而且,您正确的说,像g.V().hasLabel('customer')这样的查询会很昂贵,因为没有很多图可以优化这种类型的操作。在大图上,这通常被认为是OLAP使用Gremlin Spark进行查询。

  

我从Python收到“达到最大递归”错误。 gremlin中的同一查询工作流畅,快速

那是bug。现在已解决,但该修复程序尚未发布到pypi。当前正在准备发布版本,因此您将在3.2.10和3.3.4中看到它。如果需要立即修补程序,可以看到fix was fairly trivial

  

在gremlin-python中,“。next()”命令的运行速度非常慢,而在gremlin中则需要1秒钟时间

我不确定您所看到的是什么。我认为您可能想详细介绍有关您的环境的细节,以了解如何重新创建差异。也许您应该将这个问题提交给gremlin用户的邮件列表。

  

因此,我希望能够从Python / gremlin-python对服务器进行纯gremlin查询,并将其结果直接存储在Python变量中。有可能吗?

这完全有可能,而这正是gremlin-python要做的。它使您可以用Python编写Gremlin并从服务器取回结果,以根据需要在客户端进行处理。