Подключение локального экземпляра Gephi к удаленному серверу Titan - PullRequest
0 голосов
/ 15 ноября 2018

Вот сценарий, который я хочу решить: у меня есть две среды: локальная машина и виртуальная машина, размещенная в Azure

В виртуальной машине я запускаю контейнер gremlin, который включает в себя клиент, сервер gremlin и подключается к базе данных графа cassandra.

Это информация о работающем контейнере, когда я запускаю команду Docker Container ls :

CONTAINER ID: 029095e26f53        
IMAGE: 3f03c6bfb0a2
COMMAND: "/bin/sh -c /gremlin…"   
CREATED: 2 weeks ago         
STATUS: Up 2 weeks          
PORTS: 0.0.0.0:8182->8182/tcp                                                                                              
NAME: gremlin

Когда я вхожу внутрь контейнера, я запускаю следующую команду для запуска клиента gremlin:

./bin/gremlin.sh

В консоли gremlin я запускаю следующую команду для подключения к серверу tinkerpop:

:remote connect tinkerpop.server conf/remote.yaml

==> Подключено - localhost / 127.0.0.1: 8182 ---> ответ из консоли gremlin

Если я запускаю следующий запрос gremlin:

:> g.V().count()

Я получаю число, отличное от нуля, говорящее мне, что в базе данных графа есть записи.

Теперь, с другой стороны, у меня на локальном компьютере есть клиент Gephi, который я хочу, чтобы он мог отображать эту графическую базу данных. Или, по крайней мере, заставить Gephi показывать визуальные данные из

graph = TinkerFactory.createModern()

работает внутри контейнера с гремлином.

Я хочу сделать это, потому что мне нужно выбрать инструмент визуализации для экосистемы Гремлина и Титана.

Я попытался настроить функцию клиента Gephi для подключения к ip виртуальной машины и порту 8182, но он показывает мне красную точку, сообщающую, что это невозможно. Что мне не хватает? Я уверен, что пропущено несколько шагов. Заранее спасибо,

Хуан Игнасио

1 Ответ

0 голосов
/ 19 ноября 2018

Если ваш график «удален» и не находится в памяти в консоли Gremlin, то вам нужно найти способ сделать его доступным локально таким образом.Эта ситуация типична для графиков, работающих на Gremlin Server или полностью удаленных, таких как CosmosDB, DSE Graph или Amazon Neptune.

Типичный метод сделать его доступным локально - использовать [subgraph()][1] -шаг, чтобы вытащить только часть интересующего вас графика и вернуть его в консоль Gremlin.Он будет возвращен как TinkerGraph для графиков, которые поддерживают subgraph() -шаг (например, Titan, хотя я предполагаю, что вы будете использовать JanusGraph ), поэтому для вашего теста, использующего TinkerFactory и крошечный график, выможет просто сделать это:

gremlin> :remote connect tinkerpop.server conf/remote-objects.yaml  

Обратите внимание на конфигурацию "remote-objects.yaml", потому что эта конфигурация будет возвращать реальные объекты - фактический TinkerGraph, а не строковое представление TinkerGraph.

gremlin> :> TinkerFactory.createModern()

Это создаст «современный» график удаленно и вернет TinkerGraph в Консоль Gremlin.Вы можете получить доступ к этому результату

gremlin> graph = result[0].object

:> хранит ответ от сервера в переменной с именем «result», которая содержит ваш TinkerGraph в List.Это объясняется в справочной документации .Оттуда вы можете использовать этот «граф» объект, как если бы вы использовали стандартные инструкции Gephi .

...