Использование OrientDB ETL для загрузки файла Edges

Я использую OrientDB 2.1.2 из AMI AWS Marketplace. Я уже использовал ETL для загрузки двух наборов вершин. Теперь я пытаюсь загрузить файл Edges в OrientDB с помощью ETL и получаю: IllegalArgumentException: целевая вершина равна нулю. Я просмотрел документацию и некоторые другие примеры в сети, и моя конфигурация ETL мне кажется правильной. Я надеялся, что у кого-то может быть идея.

Мои два подкласса V:

Автор (authorId, authGivenName, authSurname) и индекс по authorId

Аннотация (abstractId) с индексом по abstractId

Мой подкласс E

Создано - для него не определены свойства или индексы

Мой пограничный файл

(authorId, abstractId) - \t разделенные поля с одной строкой заголовка с этими именами

Моя конфигурация ETL:

{
  "config": { "log":"debug"},
  "source" : { "file": { "path":"/root/poc1_Datasets/authAbstractEdge1.tsv" }},
  "extractor":{ "row":{} },
  "transformers":[
       { "csv":{ "separator": "\t" } },
       { "merge": {
           "joinFieldName": "authorId",
           "lookup":"Author.authorId"
        } },
       { "vertex":{ "class":"Author" } },
       { "edge" : {
           "class": "Authored",
           "joinFieldName": "abstractId",
           "lookup": "Abstract.abstractId",
           "direction": "out"
        }}
  ],
  "loader":{
    "orientdb":{
        "dbURL":"remote:localhost/DataSpine1",
        "dbType":"graph",
        "wal":false,
        "tx":false
   } }
}

Когда я запускаю ETL с этой конфигурацией и файлом, я получаю:

OrientDB etl v.2.1.2 (build @BUILD@) www.orientdb.com
BEGIN ETL PROCESSOR
[file] DEBUG Reading from file /root/poc1_Datasets/authAbstractEdge1.tsv
[0:csv] DEBUG Transformer input: authorId   abstractId
[0:csv] DEBUG parsing=authorId  abstractId
[0:csv] DEBUG Transformer output: null

2016-06-09 12:15:04:088 WARNI Transformer [csv] returned null, skip rest of pipeline execution [OETLPipeline][1:csv] DEBUG Transformer input: 9-s2.0-10039026700    2-s2.0-29144536313
[1:csv] DEBUG parsing=9-s2.0-10039026700    2-s2.0-29144536313
[1:csv] DEBUG document={authorId:9-s2.0-10039026700,abstractId:2-s2.0-29144536313}
[1:csv] DEBUG Transformer output: {authorId:9-s2.0-10039026700,abstractId:2-s2.0-29144536313}
[1:merge] DEBUG Transformer input: {authorId:9-s2.0-10039026700,abstractId:2-s2.0-29144536313}
[1:merge] DEBUG joinValue=9-s2.0-10039026700, lookupResult=Author#12:10046021{authorId:9-s2.0-10039026700,authGivenName:M. A.,authSurname:Turovskaya,abstractId:2-s2.0-29144536313} v2
[1:merge] DEBUG merged record Author#12:10046021{authorId:9-s2.0-10039026700,authGivenName:M. A.,authSurname:Turovskaya,abstractId:2-s2.0-29144536313} v2 with found record={authorId:9-s2.0-10039026700,abstractId:2-s2.0-29144536313}
[1:merge] DEBUG Transformer output: Author#12:10046021{authorId:9-s2.0-10039026700,authGivenName:M. A.,authSurname:Turovskaya,abstractId:2-s2.0-29144536313} v2
[1:vertex] DEBUG Transformer input: Author#12:10046021{authorId:9-s2.0-10039026700,authGivenName:M. A.,authSurname:Turovskaya,abstractId:2-s2.0-29144536313} v2
[1:vertex] DEBUG Transformer output: v(Author)[#12:10046021]
[1:edge] DEBUG Transformer input: v(Author)[#12:10046021]
[1:edge] DEBUG joinCurrentValue=2-s2.0-29144536313, lookupResult=Abstract#13:16626366{abstractId:2-s2.0-29144536313} v1
Error in Pipeline execution: java.lang.IllegalArgumentException: destination vertex is null
java.lang.IllegalArgumentException: destination vertex is null
    at com.tinkerpop.blueprints.impls.orient.OrientVertex.addEdge(OrientVertex.java:888)
    at com.tinkerpop.blueprints.impls.orient.OrientVertex.addEdge(OrientVertex.java:832)
    at com.orientechnologies.orient.etl.transformer.OEdgeTransformer.createEdge(OEdgeTransformer.java:188)
    at com.orientechnologies.orient.etl.transformer.OEdgeTransformer.executeTransform(OEdgeTransformer.java:117)
    at com.orientechnologies.orient.etl.transformer.OAbstractTransformer.transform(OAbstractTransformer.java:37)
    at com.orientechnologies.orient.etl.OETLPipeline.execute(OETLPipeline.java:114)
    at com.orientechnologies.orient.etl.OETLProcessor.executeSequentially(OETLProcessor.java:487)
    at com.orientechnologies.orient.etl.OETLProcessor.execute(OETLProcessor.java:291)
    at com.orientechnologies.orient.etl.OETLProcessor.main(OETLProcessor.java:161)
ETL process halted: com.orientechnologies.orient.etl.OETLProcessHaltedException: java.lang.IllegalArgumentException: destination vertex is null

Когда я смотрю на отладку, кажется, что MERGE успешно нашел вершину Author, а EDGE успешно нашел абстрактную вершину (на основе RID в выходных данных). Я в тупике, почему я получаю исключение. Заранее спасибо за любые указатели.


person Curt Kohler    schedule 09.06.2016    source источник


Ответы (2)


Вы уже пробовали решить эту проблему с помощью нового etl, телепорта версии 2.2? По этой ссылке есть описание нового продукта etl.

person lsavio    schedule 13.06.2016
comment
Спасибо за предложение. К сожалению, я извлекаю данные своего графика из необработанных XML-файлов и не использую СУБД. - person Curt Kohler; 20.06.2016

На самом деле я обнаружил, что загрузчик ETL в OrientDB версии 2.2.2, похоже, решил эту проблему. (Примечание: в версии 2.2.0 все еще была та же проблема)

person Curt Kohler    schedule 20.06.2016