【问题标题】:OrientDB Java Batch ImportOrientDB Java 批量导入
【发布时间】:2018-06-08 11:39:16
【问题描述】:

我在使用 Java 时在 OrientDB 中的批量导入遇到了更大的问题。

我的数据是记录 ID 和令牌的集合。每个 ID 都存在一组令牌,但令牌可以在多个 ID 中。

例子:

ID 令牌

1 2,3,4

2 3,5,7

3 1,2,4

我的图表应该有两种类型的顶点:rIDClasstokenClass。我想给每个顶点一个对应于记录 ID 和令牌的 ID。所以tokenClass顶点的总数应该是数据中唯一token的总数。 (每个令牌只创建一次!)

我怎样才能意识到这个问题?我尝试了原始文档中的“自定义批量插入”,并尝试了蓝图文档中描述的“批量实现”方法。

第一种方法的问题是,OrientDB 为每个插入的标记创建一个带有自定义 ID 的单独顶点,该 ID 由系统本身设置。

第二种方法的问题是当我尝试向批处理图中添加一个顶点时,我无法设置相应的顶点类,另外我得到一个异常。这是我的第二种方法的代码:

BatchGraph<OrientGraph> bgraph = new BatchGraph<OrientGraph>(graph, VertexIDType.STRING, 1);
Vertex vertex1 =  bgraph.addVertex(1);
vertex1.setProperty("uid", 1);

也许有人有解决办法。

Vertex vertex2 = bgraph.addVertex(2);
vertex2.setProperty("uid", 2);

Edge edge1 = graph.addEdge(12, vertex1 , vertex2, "EdgeConnectClass");

我得到以下异常:

Exception in thread "main" java.lang.ClassCastException:
com.tinkerpop.blueprints.util.wrappers.batch.BatchGraph$BatchVertex cannot be cast to com.tinkerpop.blueprints.impls.orient.OrientVertex
    at com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.addEdge(OrientBaseGraph.java:612)
    at App.indexRecords3(App.java:83)
    at App.main(App.java:47)

【问题讨论】:

  • This 可能有帮助

标签: java graph orientdb bulkinsert batch-insert


【解决方案1】:

我不知道我是否理解正确,但是,如果你想要这样的架构:

试试这个:

Vertex vertex1 = g.addVertex("class:rIDClass");
vertex1.setProperty("uid", 1);

Vertex token2 = g.addVertex("class:tokenClass");
token2.setProperty("uid", 2);

Edge edge1 = g.addEdge("class:rIDClass", vertex1, token2, "EdgeConnectClass");

希望对你有帮助

问候

【讨论】:

  • 谢谢,但我想创建一个批量插入,你的方法只适用于普通插入。我解决了这个问题,但没有使用 Batchgraph,我使用了 OrientDB 文档中的自定义 Batch 插入。注意!!!:我必须禁用交易!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 2013-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多