Ho due file CSV:Come utilizzare OrientDB ETL per creare bordi solo
Prima contenente ~ record 500M nel seguente formato
id,name
10000023432,Tom User
13943423235,Blah Person
Seconda contenente ~ amico 1.5B relazioni nel seguente formato
fromId,toId
10000023432,13943423235
Ho utilizzato lo strumento ETL OrientDB per creare i vertici dal primo file CSV. Ora, ho solo bisogno di creare spigoli per stabilire una connessione di amicizia tra loro.
ho cercato configurazione multipla del file JSON ETL finora, l'ultimo dei quali questa:
{
"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" }
]
}
}
}
Ma, purtroppo, questo crea anche il vertice con "da" e "per" la proprietà, oltre per creare il bordo.
Quando ho provare a rimuovere il trasformatore vertice, processo ETL genera un errore:
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
Che cosa mi manca qui?
Ho il mio caricatore che utilizza l'API Java. Mi stavo chiedendo se è possibile utilizzare lo strumento ETL, perché ci sono ganci di parallelizzazione automatici nello strumento. Grazie per la risposta però. – lambdapilgrim