tinkerpop - 带有 spring-data-gremlin 的 Janusgraph
问题描述
我正在使用以 Cassandra 作为后端的 JanusGraph 0.5.3。使用spring-data-gremlin版本 2.3.0 以及 spring-boot:2.5.0, tinkerpop:3.4.6,我正在尝试连接到 Janusgraph。可以成功创建顶点并使用 gremlin 控制台,我可以查询和查看顶点。但是使用 spring-data-gremlin 和 tinkerpop,反序列化步骤失败了。在其他帖子和讨论之后,我使用了不同的帖子,包括GraphSONMessageSerializerV3d0。错误信息是
at [Source: (byte[])"{"requestId":"2c9fc2cc-de02-4f19-b2d3-64d20c96530a","status":{"message":"","code":200,"attributes":{"@type":"g:Map","@value":["host","/172.19.0.1:35744"]}},"result":{"data":{"@type"
:"g:List","@value":[{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int64","@value":1000},"label":"Product","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"janusgraph:RelationId
entifier","@value":{"relationId":"215s0t-rs-35x"}},"value":"Product-11","label":"name"}}],"_classname":[{"@type":"g:"[truncated 235 bytes]; line: 1, column: 404] (through reference chain: java.util.Linke
dHashMap["result"]->java.util.LinkedHashMap["data"])
at org.apache.tinkerpop.shaded.jackson.databind.JsonMappingException.from(JsonMappingException.java:271)
at org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:1718)
at org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserialize(GraphSONTypeDeserializer.java:194)
at org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserializeTypedFromAny(GraphSONTypeDeserializer.java:101)
at org.apache.tinkerpop.shaded.jackson.databind.deser.std.UntypedObjectDeserializer.deserializeWithType(UntypedObjectDeserializer.java:312)
at org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:529)
at org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:364)
at org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:29)
at org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserialize(GraphSONTypeDeserializer.java:219)
at org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserializeTypedFromAny(GraphSONTypeDeserializer.java:101)
at org.apache.tinkerpop.shaded.jackson.databind.deser.std.UntypedObjectDeserializer.deserializeWithType(UntypedObjectDeserializer.java:312)
at org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:529)
at org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:364)
at org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:29)
at org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserialize(GraphSONTypeDeserializer.java:212)
at org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserializeTypedFromObject(GraphSONTypeDeserializer.java:86)
at org.apache.tinkerpop.shaded.jackson.databind.deser.std.MapDeserializer.deserializeWithType(MapDeserializer.java:400)
at org.apache.tinkerpop.shaded.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:68)
at org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext.readValue(DeserializationContext.java:760)
at org.apache.tinkerpop.shaded.jackson.databind.DeserializationContext.readValue(DeserializationContext.java:747)
at org.apache.tinkerpop.gremlin.structure.io.graphson.AbstractObjectDeserializer.deserialize(AbstractObjectDeserializer.java:48)
at org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserialize(GraphSONTypeDeserializer.java:212)
at org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTypeDeserializer.deserializeTypedFromAny(GraphSONTypeDeserializer.java:101)
at org.apache.tinkerpop.shaded.jackson.databind.deser.std.StdDeserializer.deserializeWithType(StdDeserializer.java:136)
at org.apache.tinkerpop.shaded.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:68)
和json,它试图序列化它是
[Source: (byte[])"{"requestId":"2c9fc2cc-de02-4f19-b2d3-64d20c96530a","status":{"message":"","code":200,"attributes":{"@type":"g:Map","@value":["host","/172.19.0.1:35744"]}},"result":{"data":{"@type"
:"g:List","@value":[{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int64","@value":1000},"label":"Product","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"janusgraph:RelationId
entifier","@value":{"relationId":"215s0t-rs-35x"}},"value":"Product-11","label":"name"}}],"_classname":[{"@type":"g:"[truncated 235 bytes]; line: 1, column: 404] (through reference chain: java.util.Linke
dHashMap["result"]->java.util.LinkedHashMap["data"])
使用gremlin控制台,我序列化了顶点,顶点的json是
{
"id": {
"@type": "g:Int64",
"@value": 1000
},
"label": "Product",
"outE": {
"also_bought": [
{
"id": {
"@type": "janusgraph:RelationIdentifier",
"@value": {
"relationId": "215st9-rs-8sut-8hk"
}
},
"inV": {
"@type": "g:Int64",
"@value": 11000
}
},
{
"id": {
"@type": "janusgraph:RelationIdentifier",
"@value": {
"relationId": "215t7h-rs-8sut-99c"
}
},
"inV": {
"@type": "g:Int64",
"@value": 12000
}
}
]
},
"properties": {
"name": [
{
"id": {
"@type": "janusgraph:RelationIdentifier",
"@value": {
"relationId": "215s0t-rs-35x"
}
},
"value": "Product-11"
}
],
"_classname": [
{
"id": {
"@type": "janusgraph:RelationIdentifier",
"@value": {
"relationId": "215sf1-rs-3yd"
}
},
"value": "com.divvet.store.productgraph.domain.Product"
}
]
}
}
这与将顶点嵌套两层的 spring-data-gremlin 序列化不匹配
[Source: (byte[])"{"requestId":"2c9fc2cc-de02-4f19-b2d3-64d20c96530a","status":{"message":"","code":200,"attributes":{"@type":"g:Map","@value":["host","/172.19.0.1:35744"]}},"result":{"data":{"@type"
:"g:List","@value":[{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int64","@value":1000},"label":"Product","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"janusgraph:RelationId
entifier","@value":{"relationId":"215s0t-rs-35x"}},"value":"Product-11","label":"name"}}],"_classname":[{"@type":"g:"[truncated 235 bytes]; line: 1, column: 404] (through reference chain: java.util.LinkedHashMap["result"]>java.util.LinkedHashMap["data"])
remote-graph.properties 中的属性是
gremlin.remote.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection
gremlin.remote.driver.clusterFile=conf/remote-objects.yaml
gremlin.remote.driver.sourceName=g
和 remote-objects.yaml 是
hosts: [localhost]
port: 8182
serializer: {
className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0,
config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
对于序列化程序,我尝试了此处列出的所有序列化程序 如果您需要更多详细信息以及如何解决此问题,请告诉我。
解决方案
推荐阅读
- c - 我想将 4 个字符串作为输入并显示到另一个数组中
- python - Python 处理配置的最佳方式
- python - 图像旋转后如何计算新点的位置
- javascript - NodeJs & Express Learning RESTFUL,在提交要更新的表单时,它会创建一个带有新 ._id 的新表单,而不是更新原始表单
- spring - Bazel 运行与测试
- python - 检查嵌套列表中的所有元素在python中是正数还是负数
- r - 如何在树莓派(RaspbianOS)上安装 RStudio
- ruby-on-rails - 如何使用操作电缆向 Rails 中的单个用户发送通知
- css - 材质 UI 弹出框 - 小屏幕上的位置
- python - Python - 以 10 为底的 int() 的无效文字:'\ufeeff0'