如何使用tinkerpop gremlin和neptune将远程图形导出到json?

时间:2019-07-01 13:37:54

标签: gremlin tinkerpop3 amazon-neptune

我正在尝试将整个远程图形导出到json。当我使用以下代码时,它导致一个空文件。我正在使用Gremlin驱动程序3.3.2,因为它与底层图形数据库AWS Neptune中的该版本相同。

var traversal = EmptyGraph.instance().traversal().withRemote(DriverRemoteConnection.using(getCluster()))
traversal.getGraph().io(graphson()).writeGraph("my-graph.json");

应该如何用数据填充图形以便可以导出图形?

4 个答案:

答案 0 :(得分:2)

neptune-export不支持直接导出到S3。您必须导出到本地文件系统,然后将文件分别复制到S3。

答案 1 :(得分:1)

海王星不支持Gremlin io()步骤。 Here是Neptune的文档,它讨论了Gremlin的Amazon Neptune实施与TinkerPop实施之间的另一个区别。

答案 2 :(得分:1)

我还将其发布到了Gremlin用户列表中。

这里有一些代码可以通过Neptune为您完成,并且应该可以与我认为的大多数Gremlin Server实现一起使用。

https://github.com/awslabs/amazon-neptune-tools/tree/master/neptune-export

如果您选择导出为CSV,则导出结果可用于通过Neptune的批量加载器加载。

希望有用

如果这超出了您的希望,它将至少为您提供一些帮助的指针。

对于托管图(包括Neptune),发现它们没有公开Graph对象或不提供对io()类的访问权限并不少见。

答案 3 :(得分:0)

从Ankit和Kelvin获得宝贵的反馈后,我集中精力使用本地gremlin服务器来处理数据争用。

一旦将数据保存在本地运行的服务器上,通过从内存中的实体模型生成gremlin脚本,我就可以通过Gremlin控制台访问它并运行以下命令:

~/apache-tinkerpop-gremlin-console-3.3.7/bin/gremlin.sh
gremlin> :remote connect tinkerpop.server conf/remote.yaml
gremlin> :> graph.io(graphson()).writeGraph("my-graph.json")
==>null

这会将my-graph.json文件放在docker容器上的/opt/gremlin-server/中。 我使用docker cp $(docker container ls -q):/opt/gremlin-server/my-graph.json .

提取了它

然后我可以使用这些数据来填充gremlin-server testcontainer,以针对图数据库运行集成测试。