Подключение для составления Янусграфа из Java для удаленного обхода

Я пытаюсь подключиться к удаленному серверу compose-janusgraph, чтобы создать граф и добавить вершины. Обратите внимание, что у меня нет доступа к конфигурациям сервера или возможности изменять настройки сервера.

Я могу сделать это через мою локальную консоль gremlin с

:remote connect tinkerpop.server conf/compose.yaml session
:remote console
graph=ConfiguredGraphFactory.create("mygraph")
graph=ConfiguredGraphFactory.open("mygraph")
g.addV("pat")
g.tx().commit()

Я хочу сделать то же самое с Java-клиентом, использующим GraphTraversalSource. Из Java я могу использовать опцию Cluser-> Client-> submit для успешной отправки хороших строк. Но у меня не получилось с GraphTraversalSource, возникло множество ошибок.

Конфигурация conf / compose.yaml, которую я использую для настройки консоли gremlin, приведена ниже и аналогична той, которую я использую в конфигурации remote-graph gremlin.remote.driver.clusterFile.

hosts: [portal-xxx.composedb.com] 
port: 15290 
username: admin 
password: pass 
connectionPool: { enableSsl: true } 
serializer: { className: 
    org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, 
    config: { serializeResultToString: true } }

свойства удаленного графа выглядят как

gremlin.remote.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection
# cluster file has the remote server configuration
#gremlin.remote.driver.clusterFile=gremlin-console.yaml
gremlin.remote.driver.clusterFile=/Users/julian.stephen/ibm.github/privacy-secbu/Privacy-DataViz/src/main/resources/gremlin-console.yaml
# source name is the global graph traversal source defined on the server
gremlin.remote.driver.sourceName=mygraph

Если я попробую

Graph graph = EmptyGraph.instance();
GraphTraversalSource g = graph.traversal().withRemote(conf);
g.addV("Java Remote Test");
g.close();

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

JanusGraph graph = ConfiguredGraphFactory.open("mygraph");

вместо EmptyGraph приводит к ошибке (такой же, как описанная ниже). Когда я создаю конфигурацию ConfiguredGraphFactory.createConfiguration(new MapConfiguration(map));, а затем пытаюсь открыть график, я получаю сообщение об ошибке типа Please add a key named "ConfigurationManagementGraph" to the "graphs" property in your YAML file and restart the server to be able to use the functionality of the ConfigurationManagementGraph class. У меня нет доступа к серверу, как было указано вначале.

Я также пробовал разные варианты использования JanusGraphFactory, но безрезультатно.

Может кто поможет?


person Max Arbiter    schedule 02.02.2019    source источник


Ответы (1)


Оказалось, что это была неправильная конфигурация параметра channelizer на сервере Janusgraph, который не создавал привязки динамического обхода для новых графов, созданных с помощью GraphConfiguration Factory. Как только это было исправлено серверной командой и обновлено развертывание, динамические обходы были привязаны, и код начал работать.

person Max Arbiter    schedule 03.04.2019
comment
Что изменилось в ченнелайзере? Не могли бы вы уточнить? - person anaray; 11.06.2020
comment
Мы также видим, что добавьте ключ с именем ConfigurationManagementGraph к свойству graphs в вашем YAML-файле и перезапустите сервер, чтобы иметь возможность использовать функциональные возможности класса ConfigurationManagementGraph при попытке подключения из Java-клиента. В документе JanusGraph об этом не говорится. - person anaray; 11.06.2020
comment
Вы пытаетесь динамически создавать графики с помощью org.janusgraph.core.ConfiguredGraphFactory? Только тогда ConfigurationManagementGraph актуален. Я сам не пробовал использовать это в настройках сервера Janus. Это было некоторое время назад, и в то время у меня не было возможности увидеть конфигурацию сервера, чтобы точно сказать, что было изменено. - person Max Arbiter; 12.06.2020
comment
В моем случае мне нужно было изменить channelizer с org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer по умолчанию на org.janusgraph.channelizers.JanusGraphWebSocketChannelizer. См. эту часть документации JanusGraph . - person fakedad; 06.05.2021