我有一个巨大的数据集,必须通过gremlin (gremlin服务器)插入到图形数据库中。由于xml文件太大(超过8 1gb ),我决定将其拆分为多个可管理的9个xml文件(每个文件大约1 1gb)。我的问题是,有没有一种方法可以通过gremlin服务器将这些数据文件中的每一个插入到我的tinkerpop图形数据库中?比如尝试像这样的东西?或者,插入这些数据的最佳方式是什么?
graph.io(IoCore.graphml()).readGraph("data01.xml")
graph.io(IoCore.graphml()).readGraph("data02.xml")
graph.io(IoCore.graphml()).readGraph("data03.xml")
graph.io(IoCore.graphml()).readGraph("data04.xml")
graph.io(IoCore.graphml()).readGraph("data05.xml")
发布于 2020-06-16 11:58:32
这是一个很大的GraphML文件。我不确定我曾经遇到过这么大的一个。我想知道你是如何拆分它的,因为GraphML文件不容易拆分,因为它们是基于XML的,有一个头和一个结构,其中顶点和边在单独的节点中。正是由于这些(和其他)原因,TinkerPop开发了像Gryo和GraphSON这样的格式,这些格式可以很容易地拆分,以便在类似Hadoop的文件结构中进行处理。
也就是说,假设您正确地拆分了GraphML文件,因此每个文件都是一个完整的子图,我想您应该能够按照您建议的方式加载它们,但是,我担心这样做需要多少内存。io()
加载器不适用于批量并行加载,它基本上包含顶点的内存缓存,以加快加载速度。内存中的缓存本质上只是一个不会使其内容过期的HashMap
。因此,当加载发生时,您需要能够将特定文件的所有Vertex
实例保存在内存中。
我不知道您的需求是什么,也不知道您是如何获得如此大的GraphML文件的,但是对于这种大小的图形,我会查看您正在使用的图形的特定于提供者的批量加载工具,或者使用spark-gremlin或某种Gremlin脚本并行加载数据的自定义方法。
https://stackoverflow.com/questions/62336643
复制