【发布时间】:2018-06-08 11:39:16
【问题描述】:
我在使用 Java 时在 OrientDB 中的批量导入遇到了更大的问题。
我的数据是记录 ID 和令牌的集合。每个 ID 都存在一组令牌,但令牌可以在多个 ID 中。
例子:
ID 令牌
1 2,3,4
2 3,5,7
3 1,2,4
我的图表应该有两种类型的顶点:rIDClass 和 tokenClass。我想给每个顶点一个对应于记录 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