标签: gremlin-server

JanusGraph :请将名为“ConfigurationManagementGraph”的键添加到“graphs”中

我在 gremlin 控制台中收到此错误

cegprakash@cegprakash:~/workspace/janusgraph-0.2.1-hadoop2$ ./bin/gremlin.sh 

         \,,,/
         (o o)
-----oOOo-(3)-oOOo-----
plugin activated: janusgraph.imports
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/cegprakash/workspace/janusgraph-0.2.1-hadoop2/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/cegprakash/workspace/janusgraph-0.2.1-hadoop2/lib/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
19:10:12 WARN  org.apache.hadoop.util.NativeCodeLoader  - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
plugin activated: tinkerpop.hadoop
plugin activated: tinkerpop.spark
plugin activated: tinkerpop.tinkergraph
gremlin> def graph=ConfiguredGraphFactory.create("mygraph")
org.janusgraph.graphdb.management.utils.ConfigurationManagementGraphNotEnabledException: Please add …
Run Code Online (Sandbox Code Playgroud)

graph-databases gremlin gremlin-server janusgraph

6
推荐指数
1
解决办法
3137
查看次数

普通 JSON 转 GraphSON 格式

我有两个问题:

  1. 我在哪里可以找到 GraphSON 文件的基本格式,保证 gremlin 控制台成功加载?我正在尝试将 JSON(大约有 10-20 个字段)转换为另一个可以由 gremlin 查询的文件,但我实际上无法找到有关 graphson 格式保留的字段的任何相关信息,或者我应该如何处理 ID等等。我导出了他们提供的现代图形,它甚至不是一个有效的 JSON(多个 JSON 根元素),而是一个 JSON 列表 [1] 我还看到了像 outE、inE 这样的字段...创建?

  2. 如果我能够创建 JSON,那么在我启动它时,我应该在哪里告诉服务器将它加载为基础图?在配置文件中还是在脚本中?

谢谢!阿德里安

[1] https://pastebin.com/drwXhg5k

{"id":1,"label":"person","outE":{"created":[{"id":9,"inV":3,"properties":{"weight":0.4}}],"knows":[{"id":7,"inV":2,"properties":{"weight":0.5}},{"id":8,"inV":4,"properties":{"weight":1.0}}]},"properties":{"name":[{"id":0,"value":"marko"}],"age":[{"id":1,"value":29}]}}
{"id":2,"label":"person","inE":{"knows":[{"id":7,"outV":1,"properties":{"weight":0.5}}]},"properties":{"name":[{"id":2,"value":"vadas"}],"age":[{"id":3,"value":27}]}}
{"id":3,"label":"software","inE":{"created":[{"id":9,"outV":1,"properties":{"weight":0.4}},{"id":11,"outV":4,"properties":{"weight":0.4}},{"id":12,"outV":6,"properties":{"weight":0.2}}]},"properties":{"name":[{"id":4,"value":"lop"}],"lang":[{"id":5,"value":"java"}]}}
{"id":4,"label":"person","inE":{"knows":[{"id":8,"outV":1,"properties":{"weight":1.0}}]},"outE":{"created":[{"id":10,"inV":5,"properties":{"weight":1.0}},{"id":11,"inV":3,"properties":{"weight":0.4}}]},"properties":{"name":[{"id":6,"value":"josh"}],"age":[{"id":7,"value":32}]}}
{"id":5,"label":"software","inE":{"created":[{"id":10,"outV":4,"properties":{"weight":1.0}}]},"properties":{"name":[{"id":8,"value":"ripple"}],"lang":[{"id":9,"value":"java"}]}}
{"id":6,"label":"person","outE":{"created":[{"id":12,"inV":3,"properties":{"weight":0.2}}]},"properties":{"name":[{"id":10,"value":"peter"}],"age":[{"id":11,"value":35}]}}
Run Code Online (Sandbox Code Playgroud)

javascript json gremlin gremlin-server graphson

5
推荐指数
1
解决办法
3846
查看次数

如何在 Gremlin 中使用 UUID 作为 id?

我正在添加这样的顶点:

g.addV("foobar").property("id", 1).property(...etc...

如何使用 uuid 而不是整数 id 设置属性?

gremlin tinkerpop gremlin-server

5
推荐指数
1
解决办法
3485
查看次数

启动 janusgraph 的最低系统要求是什么

我刚刚启动 JanusGraph,我的总 RAM 使用量超过 5GB,没有触发任何查询。我有以下依赖服务正在运行

  1. JanusGraph
  2. GremlinServer(通过 JanusGraph)
  3. 卡桑德拉(通过 JanusGraph)
  4. Elasticsearch(通过 JanusGraph)

在此处输入图片说明

有一些java实例正在运行 在此处输入图片说明

我试图找出 janusgraph 的最低系统要求,但我无法在其文档中找到它。任何人都有相同的链接?或者知道最低系统要求是多少?

是否还有任何配置更改以使其消耗更少的 RAM?

elasticsearch cassandra-2.0 gremlin-server janusgraph

5
推荐指数
0
解决办法
640
查看次数

Gremlin:服务器上未配置别名 [g] 的遍历源 [g]

我正在为我的 janusGraph 数据库使用 Docker 实例,并且非常具体;我使用以下 Docker 映像: https://github.com/sunside/janusgraph-docker

图像工作正常,除非我删除此 groovy 文件中的第 12 行:https://github.com/sunside/janusgraph-docker/blob/master/janusgraph/empty-sample.groovy其中包含以下内容:

graph.io(graphml()).readGraph('data/air-routes-small.graphml')
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用 gremlin python 从数据库中选择任何顶点,在删除前面提到的行后,我会收到以下错误:

gremlin_python.driver.protocol.GremlinServerError: 499: The traversal source [g] for alias [g] is not configured on the server.
Run Code Online (Sandbox Code Playgroud)

因此,如果不导入任何现有数据,它就不起作用。但我想从一个空数据库开始,而不是现有数据库,这就是我不想导入 .graphml 文件的原因。但我想我仍然需要以某种方式初始化一个空数据库,有什么想法吗?

graph gremlin docker gremlin-server janusgraph

5
推荐指数
1
解决办法
2759
查看次数

如何处理具有大量边的顶点?

在我们的图中,有很多顶点的输出边超过 100k。我想知道处理由此产生的所有情况的方法是什么。

假设我们group_1在图中定义了一个。group_1有 100k members。我们有一些从member_x顶点开始的遍历并计算一些东西。这些遍历非常快,每次都在大约 2 秒内结束。

但是时代变了,现在我们需要将单个小遍历的所有结果汇总为一个数字。遍历必须包含来自group_1's 成员的所有结果。

最初,我们的方法是创建其发射一束遍历members_x通过使用skiplimit,然后,在应用层上采用并行处理,计数的我们的东西的总和。但是,这种方法几乎没有问题:

  • g.V().has('group',y).out('member_of').skip(0).limit(10)- 根据文档,这种遍历每次可以返回不同的结果。所以以这种方式创建包是不正确的
  • g.V().has('group',y).out('member_of').skip(100_000).limit(10) 花费太长时间,因为正如我们发现的那样,数据库仍然需要访问 100k 个顶点

因此,我们的下一个方法是存储一个遍历,该遍历会发出束,members然后在单独的线程中执行并行遍历,这些遍历对先前获取的成员进行计数:

while(is_not_the_end) {
   List<Members> members = g.V().has('group',y).out('member_of').next(100)`
   addMembersToExecutorThread(members) // done in async way
}
Run Code Online (Sandbox Code Playgroud)

那么,当你遇到这样的场景时,有什么方法呢?基本上,如果可以找到一种方法来快速获取某个顶点的所有祖先,我们就可以解决该问题。在我们的例子中,这将是一个group_1. 但是仅仅通过使用g.V().has('group',y).out('member_of').properties('members_id').

有没有办法解决这个问题?或者我们应该尝试在 GraphComputer 上执行这样的查询?

gremlin tinkerpop tinkerpop3 gremlin-server janusgraph

5
推荐指数
1
解决办法
412
查看次数

通过嵌入式使用远程 janusgraph 连接有什么优点和缺点?

我在我的 Java 后端使用嵌入式 janusgraph 我的代码取决于从 graph = JanusGraphFactory.open(conf)

AFAIK 这直接连接到 Cassandra 和弹性搜索,并在我的后端应用程序 JVM 中运行 janusgraph 处理器。但是如果我想扩展 janusgraph,我需要在集群上运行单独的 janusgraph 服务器,并且需要作为客户端从我的后端连接到这些服务器。

根据github上的远程 janusgraph 示例,这是通过实例化一个 EmptyGraph 来完成的,该 EmptyGraphgraph = EmptyGraph.instance();不是 JanusGraph 的实例,而是 org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;.

我可以从上面的示例中了解到,我只能通过将 gremlin 查询提交给 janusgraph 服务器来使用它们,但是除非将代码作为字符串提交给服​​务器,否则我将无法直接使用管理 API。

最后,我可以理解,单独运行 janusgraph 服务器对可扩展性更好,但我将无法在我的代码中直接访问 janusgraph api,所以我想知道我是否理解一些我想念的 内容以及远程部署方法的优缺点和嵌入式方法相比我会失去什么?

编辑:

根据这个答案 纠正它,如果错了

连接到远程 gremlin 服务器的优缺点

优点

  • 服务器有更多的控制权,所有的查询都是集中的。
  • 由于每个人都通过远程 gremlin 服务器运行遍历/查询,因此所有内容都受到事务保护。默认情况下,远程 gremlin 服务器在事务中运行您的遍历/查询。
  • 中央战略管理
  • 中央模式管理

缺点

  • 很难进行手动事务管理
  • 您必须使用 groovy 脚本作为字符串并将其发送到删除(集群提交)以执行代码的事务。

java tinkerpop gremlin-server janusgraph

5
推荐指数
1
解决办法
667
查看次数

gremlin python - 向顶点添加多个但数量未知的属性

我想向一个顶点添加多个属性,但从一开始就没有明确知道这些属性可能是什么。例如,假设将一个人作为顶点添加到图中,我们有以下属性字典:

人 1

{
    "id": 1,
    "first_name": "bob",
    "age": 25,
    "height": 177
}
Run Code Online (Sandbox Code Playgroud)

也许要添加另一个顶点,一个人具有以下属性:

人 2

{
    "id": 2,
    "first_name": "joe",
    "surname": "bloggs",
    "occupation": "lawyer",
    "birthday": "12 September"
}
Run Code Online (Sandbox Code Playgroud)

有没有办法将两个人都添加到图中,而无需将属性键和值显式硬编码到 Gremlin属性函数中?

链接提供了正确方向的答案。可在此处找到更多有用信息。以下行反映了建议的解决方案,按预期执行,并将新顶点添加到图中。伟大的。

g.addV("person").property("id", 1, "first_name", "bob", "age", 25, "height", 177).next()
Run Code Online (Sandbox Code Playgroud)

但是,它仅在输入是硬编码的情况下才寻求工作。我已将属性字典转换为 (k1, v1, k2, v2, ..., kn, vn) 形式的值元组,但我无法以编程方式传递值。例如

tup_vals = ("id", 1, "first_name", "bob", "age", 25, "height", 177)
Run Code Online (Sandbox Code Playgroud)

但无论出于何种原因,我都不能打电话:

g.addV("person").property(*tup_vals).next()
Run Code Online (Sandbox Code Playgroud)

上面的行不会抛出异常,它只是没有按预期执行(即没有传入属性)

有没有人对如何以计算方式将这些属性字典传递给 Gremlin 属性函数有任何见解?


更新:幼稚/低效的解决方案

下面提供了一个解决方案,但这是一个糟糕的解决方案,因为它每次迭代都会查询 gremlin 服务器。理想情况下,我想同时添加所有属性。并且只有在 id 是唯一的情况下才能真正按预期工作。

g.addV("person").property('id', id).next()

for …
Run Code Online (Sandbox Code Playgroud)

python gremlin tinkerpop tinkerpop3 gremlin-server

5
推荐指数
1
解决办法
1969
查看次数

如何从 Java 获取 JanusGraphManagement

我无法理解如何从使用ConfiguredGraphFactory 创建的图表中获取JanusGraphManagement 实例。

我尝试做这样的事情:

        JanusGraphFactory.Builder config = JanusGraphFactory.build();
        config.set("storage.hostname", storageHostname);
        config.set("storage.port", storagePort);
        config.set("storage.backend", STORAGE_BACKEND);
        config.set("index.search.backend", SEARCH_BACKEND);
        config.set("index.search.hostname", indexHostname);
        config.set("index.search.port", indexPort);
        config.set("graph.graphname", graphName);

        JanusGraph graph = config.open();
        JanusGraphManagement mgmt = graph.openManagement();
Run Code Online (Sandbox Code Playgroud)

但它会产生以下异常:

java.lang.NullPointerException:必须将 Gremlin 服务器配置为使用 JanusGraphManager。

gremlin-server 因以下配置而崩溃:

host: 0.0.0.0
port: 8182
scriptEvaluationTimeout: 180000
# channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer
channelizer: org.janusgraph.channelizers.JanusGraphWebSocketChannelizer
graphManager: org.janusgraph.graphdb.management.JanusGraphManager
graphs: {
  #graph: conf/gremlin-server/janusgraph-cql-es-server.properties,
  ConfigurationManagementGraph: conf/gremlin-server/janusgraph-cql-es-server-configured.properties
}
.....
Run Code Online (Sandbox Code Playgroud)

JanusGraph 的一个是这样的:

gremlin.graph=org.janusgraph.core.ConfiguredGraphFactory
graph.graphname=ConfigurationManagementGraph
storage.backend=cql
storage.hostname=127.0.0.1
storage.cql.keyspace=janusgraph
cache.db-cache = true
cache.db-cache-time = 180000
cache.db-cache-size = 0.25
index.search.backend=elasticsearch
index.search.hostname=127.0.0.1
index.search.elasticsearch.client-only=true
Run Code Online (Sandbox Code Playgroud)

我想做的是直接从Java代码定义图形模式,这就是为什么我需要管理实例并且遍历源是不够的

java gremlin-server janusgraph

5
推荐指数
1
解决办法
393
查看次数

Gremlin 到 AWS Neptune 的 403 禁止错误

非常感谢您提前的帮助

我尝试按照https://docs.aws.amazon.com/neptune/latest/userguide/get-started.html中的说明设置我的 AWS Neptune 环境。设置似乎很好,我可以使用 Neptune Notebook 安装来检查状态。状态消息为:

{
  "status": "healthy",
  "startTime": "Tue May 12 04:24:52 UTC 2020",
  "dbEngineVersion": "1.0.2.2.R2",
  "role": "writer",
  "gremlin": {
    "version": "tinkerpop-3.4.3"
  },
  "sparql": {
    "version": "sparql-1.1"
  },
  "labMode": {
    "ObjectIndex": "disabled",
    "ReadWriteConflictDetection": "enabled"
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法通过 EC2 客户端实例中的 Gremlin 控制台连接到它,我收到 403 禁止错误,如下所示:


         \,,,/
         (o o)
-----oOOo-(3)-oOOo-----
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
plugin activated: tinkerpop.tinkergraph
gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml
WARN  org.apache.tinkerpop.gremlin.driver.Cluster  - Using deprecated SSL trustCertChainFile support
ERROR org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler  - Could not …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services gremlin amazon-iam gremlin-server amazon-neptune

5
推荐指数
1
解决办法
3205
查看次数