如何使用 python 设置 janusgraph 的模式以进行批量加载

How to set schema for janusgraph for batch-loading using python

我正在尝试通过 HBase 将数据批量加载到 janusgraph 0.2 中。我正在使用 python 的 gremlinpython 库。对于批量加载,我将 storage.batch-loading 设置为 true,现在必须定义图的架构。

我找到了为图形设置架构的文档 (https://docs.janusgraph.org/0.2.0/schema.html & https://docs.janusgraph.org/0.2.0/advanced-schema.html)。

它建议了一些基本的架构代码:

mgmt = graph.openManagement()
follow = mgmt.makeEdgeLabel('follow').multiplicity(MULTI).make()
mother = mgmt.makeEdgeLabel('mother').multiplicity(MANY2ONE).make()
mgmt.commit()

我使用 python 的 gremlinpython 库连接到图表。这就是我正在做的事情:

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
from    gremlin_python.process.traversal                import  T
from    gremlin_python.process.traversal                import  Order
from    gremlin_python.process.traversal                import  Cardinality
from    gremlin_python.process.traversal                import  Column
from    gremlin_python.process.traversal                import  Direction
from    gremlin_python.process.traversal                import  Operator
from    gremlin_python.process.traversal                import  P
from    gremlin_python.process.traversal                import  Pop
from    gremlin_python.process.traversal                import  Scope
from    gremlin_python.process.traversal                import  Barrier

from    config                                          import  graph_url, graph_name

graph = Graph()
drc = DriverRemoteConnection(graph_url, graph_name)

g = graph.traversal().withRemote(drc)

# I successfully get g here, I check it by :
# g.V().count().next()

现在我的问题是,我应该在哪里设置架构。我尝试在注释掉的行之后执行 mgmt = graph.openManagement(),但它不起作用。


更新

它在 gremlin 控制台上的工作方式为:

gremlin> :remote connect tinkerpop.server conf/remote.yaml
==>Configured localhost/127.0.0.1:8182
gremlin> 
gremlin> :> mgmt = graph.openManagement()
==>org.janusgraph.graphdb.database.management.ManagementSystem@625dfab4 

但是任何进一步的命令在这里都不起作用:

:> follow = mgmt.makeEdgeLabel('follow').multiplicity(MULTI).make()
No such property: mgmt for class: Script10

gremlinpython driver is a Gremlin Language Variant (GLV),它允许您在编程语言 Python 中原生使用 Gremlin。 JanusGraph 模式定义特定于 JanusGraph 数据库,但是 gremlinpython GLV 是通用的 TinkerPop 驱动程序,因此它没有调用数据库特定 API 的结构。

如您所述,您可以通过 Gremlin 控制台声明您的架构。另一种选择是使用基于字符串的 Gremlin 驱动程序,例如 gremlinclient or gremlinpy,并将您的模式作为字符串查询发送到服务器。