Кластер JanusGraph всегда возвращает вершину без свойств (ReferenceVertex)

У меня проблема с janusgraph gremlin-server и Cluster client. Вершины, полученные с помощью кластера (gremlin-driver 3.2.3 / 3.2.5), содержат только атрибут id, метку и свойства, всегда пустые.

Это мой конфиг клиента.

val cluster = Cluster.open("/opt/janusgraph-0.1.1-hadoop2/conf/remote-objects.yaml")

удаленные объекты.yaml

hosts: [localhost] 
   port: 8182
   serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}

Конфигурация gremlin-сервера:

host: localhost
port: 8182
scriptEvaluationTimeout: 30000
channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer
graphs: {
  graph: conf/gremlin-server/graph.properties}
plugins:
  - janusgraph.imports
scriptEngines: {
  gremlin-groovy: {
    imports: [java.lang.Math],
    staticImports: [java.lang.Math.PI],
    scripts: [scripts/empty-sample.groovy]}}
serializers:
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: {ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
processors:
  - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
  - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: { cacheExpirationTime: 600000, cacheMaxSize: 1000 }}
metrics: {
  consoleReporter: {enabled: true, interval: 180000},
  csvReporter: {enabled: true, interval: 180000, fileName: /tmp/gremlin-server-metrics.csv},
  jmxReporter: {enabled: true},
  slf4jReporter: {enabled: true, interval: 180000},
  gangliaReporter: {enabled: false, interval: 180000, addressingMode: MULTICAST},
  graphiteReporter: {enabled: false, interval: 180000}}
maxInitialLineLength: 4096
maxHeaderSize: 8192
maxChunkSize: 8192
maxContentLength: 65536
maxAccumulationBufferComponents: 1024
resultIterationBatchSize: 64
writeBufferLowWaterMark: 32768
writeBufferHighWaterMark: 65536
ssl: {enabled: false}

Удаленные запросы с использованием консоли gremlin работают нормально (remote.yaml и remote-objects.yaml)

Запросы с использованием кластера и удаленного обхода не работают:

val g = EmptyGraph.instance().traversal().withRemote(DriverRemoteConnection.using(cluster, "g"))

g.V().toList.foreach(v => println(v, "id", v.id(), "label", v.label(), v.properties("name").toList, v.getClass))

Выход:

(v[8336],id,8336,label,,List(),class org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex)
(v[12288],id,12288,label,,List(),class org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex)
(v[12304],id,12304,label,,List(),class org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex)
(v[12328],id,12328,label,,List(),class org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex)
(v[12360],id,12360,label,,List(),class org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex)

Что я делаю не так?


person xdev.developer    schedule 18.08.2017    source источник


Ответы (1)


При работе с удаленным графом, как вы это делали, вы вернетесь ReferenceElements с минимальной информацией, включенной в них. К сожалению, на данный момент по этому поводу не так много документов (я открыл билет для решения этой проблемы), но вы можете обратиться к этому ветка списка рассылки.

Удаленный обход работает нормально, но вам следует более четко указать, что вы запрашиваете. Например, если вам нужны id, label и все properties, вы можете использовать:

g.V().valueMap(true).toList()
person Jason Plurad    schedule 20.08.2017
comment
это вернет список карты свойств. Вместо того, чтобы возвращать список вершин. Мне нужно получить список вершин, содержащий все свойства - person Nischal Kumar; 18.11.2019