【发布时间】:2021-01-04 22:21:36
【问题描述】:
我有以下疑问:
g
.V("user-11")
.repeat(bothE().subgraph("subGraph").outV())
.times(2)
.cap("subGraph")
.next()
当我使用gremlin-python 运行它时,我收到以下响应:
{'@type': 'tinker:graph',
'@value': {'vertices': [v[device-3], v[device-1], v[user-11], v[card-1]],
'edges': [e[68bad734-db2b-bffc-3e17-a0813d2670cc][user-11-uses_device->device-1],
e[14bad735-2b70-860f-705f-4c0b769a7849][user-11-uses_device->device-3],
e[f0bb3b6d-d161-ec60-5e6d-068272297f24][user-11-uses_card->card-1]]}}
这是查询获得的子图的Graphson表示。
我想使用 Java 和 gremlin-driver 获得相同的响应,但我不知道如何做。
我最好的尝试是:
ObjectMapper mapper = GraphSONMapper.build().version(GraphSONVersion.V3_0).create().createMapper();
Object a = graphTraversalSource
.V(nodeId)
.repeat(bothE().subgraph("subGraph").outV())
.times(2)
.cap("subGraph")
.next();
return mapper.writeValueAsString(a);
但这给了我以下错误:
io.netty.handler.codec.DecoderException: org.apache.tinkerpop.gremlin.driver.ser.SerializationException: org.apache.tinkerpop.shaded.kryo.KryoException: Encountered unregistered class ID: 65536
我正在使用 AWS Neptune,但我怀疑这会有所不同,因为我通过 gremlin-python 收到了我想要的答案。
感谢您提供的任何帮助!谢谢
【问题讨论】:
-
由于 Python 没有本地 TinkerGraph 实现,它返回一个包含子图表示的
dict。由于 Java 确实具有本机 TinkerGraph 实现,因此您的查询返回的对象将是一个实际的 TinkerGraph 对象。 -
您没有关注the Neptune recommendation 使用更高效的GraphBinary 序列化是否有特定原因?
标签: java gremlin amazon-neptune gremlinpython