Mam dwa pliki CSV:Jak korzystać OrientDB ETL tworzyć krawędzie tylko
Pierwszy zawierający ~ rekordy 500M w następującym formacie
id,name
10000023432,Tom User
13943423235,Blah Person
drugie zawierający ~ znajomy 1.5b relacje w następującym formacie
fromId,toId
10000023432,13943423235
Użyłem narzędzia ETL OrientDB do tworzenia wierzchołków z pierwszego pliku CSV. Teraz wystarczy utworzyć krawędzie, aby nawiązać między nimi połączenie przyjaźni.
Próbowałem wielu konfiguracji w pliku json ETL dotąd, ostatni mecz tego:
{
"config": {"parallel": true},
"source": { "file": { "path": "path_to_file" } },
"extractor": { "csv": {} },
"transformers": [
{ "vertex": {"class": "Person", "skipDuplicates": true} },
{ "edge": { "class": "FriendsWith",
"joinFieldName": "from",
"lookup": "Person.id",
"unresolvedLinkAction": "SKIP",
"targetVertexFields":{
"id": "${input.to}"
},
"direction": "out"
}
},
{ "code": { "language": "Javascript",
"code": "print('Current record: ' + record); record;"}
}
],
"loader": {
"orientdb": {
"dbURL": "remote:<DB connection string>",
"dbType": "graph",
"classes": [
{"name": "FriendsWith", "extends": "E"}
], "indexes": [
{"class":"Person", "fields":["id:long"], "type":"UNIQUE" }
]
}
}
}
Ale niestety, to również tworzy wierzchołek z „z” i „do” nieruchomość, oprócz do tworzenia krawędzi.
przy próbie usuwania transformator wierzchołków, proces ETL zgłasza błąd:
Error in Pipeline execution: com.orientechnologies.orient.etl.transformer.OTransformException: edge: input type '[email protected]3
6a8' is not supported
Exception in thread "OrientDB ETL pipeline-0" com.orientechnologies.orient.etl.OETLProcessHaltedException: Halt
at com.orientechnologies.orient.etl.OETLPipeline.execute(OETLPipeline.java:149)
at com.orientechnologies.orient.etl.OETLProcessor$2.run(OETLProcessor.java:341)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.orientechnologies.orient.etl.transformer.OTransformException: edge: input type '[email protected]36a8' is not suppor
ted
at com.orientechnologies.orient.etl.transformer.OEdgeTransformer.executeTransform(OEdgeTransformer.java:107)
at com.orientechnologies.orient.etl.transformer.OAbstractTransformer.transform(OAbstractTransformer.java:37)
at com.orientechnologies.orient.etl.OETLPipeline.execute(OETLPipeline.java:115)
... 2 more
Co ja tu brakuje?
Mam własny program ładujący za pomocą interfejsu API Java. Zastanawiałem się, czy jest to możliwe za pomocą narzędzia ETL, ponieważ w narzędziu są dostępne automatyczne przechwytywanie równoległości. Dzięki za odpowiedź. – lambdapilgrim