Gremlin-Python连接到现有的JanusGraph

时间:2018-11-07 08:12:10

标签: janusgraph gremlin-server

我已经使用gremlin控制台创建了一个图形

gremlin> ConfiguredGraphFactory.graphNames
==>MYGRAPH
gremlin> ConfiguredGraphFactory.getConfiguration('MYGRAPH')
==>storage.backend=cql
==>graph.graphname=MYGRAPH
==>storage.hostname=127.0.0.1
==>Template_Configuration=false
gremlin> g.V().properties()
==>vp[name->SFO]
==>vp[country->USA]
==>vp[name->ALD]
==>vp[country->IND]
==>vp[name->BLR]
==>vp[country->IND]
gremlin>

我想使用gremlin-python与MYGRAPH连接。 有人可以告诉我如何使用gremlin-python访问名为“ MYGRAPH”的图。

预先感谢...

1 个答案:

答案 0 :(得分:5)

首先,您需要为JanusGraph安装一些jar文件,以处理gremlin-python脚本:

./bin/gremlin-server.sh -i org.apache.tinkerpop gremlin-python 3.2.9

请注意,您安装的gremlin-python版本必须与Tinuspop版本JanusGraph兼容。您可以在JanusGraph releases page上找到兼容性信息。例如JanusGraph 0.2.2与Tinkerpop 3.2.9兼容。

接下来,您需要使用ConfiguredGraphFactory启动JanusGraph服务器。您只需要使用分发中的文件conf/gremlin-server/gremlin-server-configuration.yaml

bin/gremlin-server.sh conf/gremlin-server/gremlin-server-configuration.yaml

此文件在几行中与传统的conf/gremlin-server/gremlin-server.yaml不同

graphManager: org.janusgraph.graphdb.management.JanusGraphManager
graphs: {
  ConfigurationManagementGraph: conf/janusgraph-cql-configurationgraph.properties
}

然后,我们需要在服务器的初始化脚本期间加载图MYGRAPH。请创建一个初始化脚本scripts/init.groovy。您可以在此处加载任意数量的不同图形。

def globals = [:]
myGraph = ConfiguredGraphFactory.open("MYGRAPH")
globals << [myGraphTraversal : myGraph.traversal()]

确保当gremlin服务器在conf/gremlin-server/gremlin-server-configuration.yaml中启动时执行此脚本

scriptEngines: {
  gremlin-groovy: {
    imports: [java.lang.Math],
    staticImports: [java.lang.Math.PI],
    scripts: [scripts/init.groovy]}}

最后,在您的Python项目中,安装与您的JanusGraph版本的Tinkerpop版本匹配的gremlin-python软件包。对于JanusGraph 0.2.2,这是版本3.2.9。

pip install gremlin-python==3.2.9

启动Python shell并开始编码:

>>> from gremlin_python import statics
>>> from gremlin_python.structure.graph import Graph
>>> from gremlin_python.process.graph_traversal import __
>>> from gremlin_python.process.strategies import *
>>> from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection

>>> graph = Graph()
>>> myGraphTraversal = graph.traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','myGraphTraversal'))
>>> myGraphTraversal.V().count()