Как сгенерировать данные 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, поэтому я сосредоточусь на нем. Ты мог бы:
- Отправьте сценарий, чем создаст
GraphSONWriter
на сервере, а затем предоставьтеwriteGraph()
анOutputStream
что напишетbyte[]
илиString
а затем верните это своему клиенту. - Я предполагаю, что это "маленький" график, который, вероятно, поместится в памяти, поэтому просто сделайте
g.E().subgraph('sg').cap('sg')
и скопируйте весь граф в подграф. Это даст вамTinkerGraph
на клиенте и оттуда вы можете использоватьio()
как вам нравится записывать граф локально в GraphSON. Это работает, только если вы используете Java, поскольку другие языки еще не поддерживаютsubgraph()
Что ж. - Откажитесь от использования Gremlin Server и создайте локальный
JanusGraph
экземпляр, а затемio()
будет работать как обычно.