OrientDB Java Batch Import - PullRequest
       29

OrientDB Java Batch Import

0 голосов
/ 08 июня 2018

У меня большая проблема с пакетным импортом в OrientDB, когда я использую Java.

Мои данные - это набор записей ID и токенов.Для каждого идентификатора существует набор токенов, но токены могут быть в нескольких идентификаторах.

Пример:

Идентификаторы

1 2,3,4

2 3,5,7

3 1,2,4

Мой граф должен иметь два типа вершин: rIDClass и tokenClass.Я хочу дать каждой вершине ID, соответствующий идентификатору записи и токену.Таким образом, общее количество вершин tokenClass должно быть общим количеством уникальных токенов в данных.(Каждый токен создается только один раз!)

Как я могу решить эту проблему?Я попробовал «Пользовательскую пакетную вставку» из исходной документации и попробовал метод «Пакетная реализация», описанный в документации чертежей.

Проблема первого метода заключается в том, что OrientDB создает для каждого вставленного токена отдельныйвершина с пользовательским идентификатором, который устанавливается самой системой.

Проблема второго метода заключается в том, что когда я пытаюсь добавить вершину в пакетный график, я не могу установить соответствующий класс вершины и, кроме того, получаюисключение.Это мой код из второго метода:

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)

1 Ответ

0 голосов
/ 08 июня 2018

Не знаю, правильно ли я понял, но, если вам нужна схема, подобная этой:

enter image description here

попробуйте это:

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");

Надеюсь, это поможет

С уважением

...