0
votes

Here is the scenario I want to resolve: I have two environments: a local machine and a virtual machine hosted in Azure

In the virtual machine I start a gremlin container which includes the gremlin client, server and connects to a cassandra graph database.

This is the information of the container running when i run the docker container ls command:

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

When I enter inside the container, I run the following command in order to run the gremlin client:

./bin/gremlin.sh

Once inside the gremlin console i run the following command to connect to the tinkerpop server:

:remote connect tinkerpop.server conf/remote.yaml

==>Connected - localhost/127.0.0.1:8182 ---> answer from gremlin console

If I run the following gremlin query:

:> g.V().count()

I get a number different from zero, telling me that there are a records on the graph database.

Now on the other side I have the Gephi client on my local machine which I want it to be able to show that graph database. Or at least, make Gephi to show the the visual data from a

graph = TinkerFactory.createModern()

running inside the gremlin container.

I want to do this because I need to choose a visualization tool for gremlin and titan ecosystem.

I tried to set up Gephi client feature to connect to the virtual machine's ip and the port 8182 but it shows me the red dot telling me that is not possible. What am i missing? I am pretty sure there are a few steps missing. Thanks in advance,

Juan Ignacio

1

1 Answers

1
votes

If your graph is "remote" and not in-memory in the Gremlin Console then you have to devise a way to make it available locally that way. This situation is typical for Graphs that run in Gremlin Server or are wholly remote like CosmosDB, DSE Graph or Amazon Neptune.

They typical method to make it available locally is to use [subgraph()][1]-step to pull out just the portion of the graph that you care about and return that to the Gremlin Console. It will be returned as a TinkerGraph for graphs that support subgraph()-step (like Titan, though I assume you would use JanusGraph), so for your test which is using TinkerFactory and a tiny graph you could just do this:

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

Note the configuration of "remote-objects.yaml" because that configuration will return actual objects - an actual TinkerGraph rather than a string representation of a TinkerGraph.

gremlin> :> TinkerFactory.createModern()

That will create the "modern" graph remotely and return the TinkerGraph to the Gremlin Console. You can access that result

gremlin> graph = result[0].object

The :> stores the response from the server in a variable named "result" and that contains your TinkerGraph in a List. This is explained in the reference documentation. From there you can use that "graph" object as you would using the standard Gephi instructions.