Как сгенерировать данные GraphSON для экспорта с помощью Remote Traversal?

Пример кода (JAVA):

Cluster cluster = Cluster.open(yml.getFile());
DriverRemoteConnection driver = DriverRemoteConnection.using(cluster, "graph_traversal");
GraphTraversalSource allGraph = AnonymousTraversalSource.traversal().withRemote(driver);

// Using Io --> generate a file in server-side
allGraph.Io("File.json").write().iterate()

// Using GraphSONWriter 
GraphSONMapper mapper = GraphSONMapper.build().addRegistry(JanusGraphIoRegistry.instance()).version(GraphSONVersion.V3_0).create();
GraphSONWriter writer = GraphSONWriter.build().mapper(mapper).create();
ByteArrayOutputStream output = new ByteArrayOutputStream();

// output --> "" (Empty)
writer.writeGraph(output, allGraph.getGraph());

// output --> "~" (Only Vertex Ids)
writer.writeVertices(output, allGraph.V());

Я пытаюсь экспортировать график как GraphSON с удаленного сервера. Но шаг ввода-вывода не предоставляет возможности удаленного экспорта. С GraphSonWriter он неправильно записывает содержимое. Как я могу экспортировать график в формате GraphSON в среде удаленного сервера?

Спасибо.

1 ответ

Решение

Пока TinkerPop не обеспечит лучшую поддержку в g.io()шаг для удаленных сред, он по-прежнему хорошо работает только для чтения и записи локально там, где происходит выполнение Gremlin. Если вы хотите экспортировать график в GraphSON из удаленного источника, есть несколько вариантов в зависимости от используемого графика. Вы отметили этот вопрос с помощью JanusGraph, поэтому я сосредоточусь на нем. Ты мог бы:

  1. Отправьте сценарий, чем создаст GraphSONWriter на сервере, а затем предоставьте writeGraph() ан OutputStream что напишет byte[] или String а затем верните это своему клиенту.
  2. Я предполагаю, что это "маленький" график, который, вероятно, поместится в памяти, поэтому просто сделайте g.E().subgraph('sg').cap('sg')и скопируйте весь граф в подграф. Это даст вамTinkerGraph на клиенте и оттуда вы можете использовать io()как вам нравится записывать граф локально в GraphSON. Это работает, только если вы используете Java, поскольку другие языки еще не поддерживаютsubgraph() Что ж.
  3. Откажитесь от использования Gremlin Server и создайте локальный JanusGraph экземпляр, а затем io() будет работать как обычно.
Другие вопросы по тегам