I used orientdb 2.0.7 for all the below. First, some documentation issues then questions regarding using gremlin in etl scripts
I have attached etl json and a test input file. the json assume the test_nodes.tsv is at /tmp/test_nodes.tsv and creates a plocal db in /tmp. The json has several command blocks that cause errors, you can reproduce the different errors I discuss below by swapping around the positioning of the blocks. Overall what I want is a working example of using a gremlin command in etl, ideally one that also uses variables bound using sql commands. --------- *1) DOCUMENTATION ISSUES* ----- *i) loader param useLightweightEdges is not documented* this issue documents: > Supported this new parameter in loader settings: > useLightweightEdges: false https://github.com/orientechnologies/orientdb-etl/issues/24 This is not documented at: http://orientdb.com/docs/last/orientdb-etl.wiki/Loader.html I actually ended up doing: "begin":[ > {"console":{ > > "commands" : [ > "connect plocal:/tmp/test_db;", > "alter database custom useLightweightEdges=true;", > "disconnect;" > ] > } > } > ], as a workaround before discovering that in the closed issues!! ----- *ii) I can't any explicit mentions of power to specify custom output for transformers* This issue, the code and various examples document that you can specify custom "output" to bind variables. https://github.com/orientechnologies/orientdb-etl/issues/2 I can't find it explicitly stated in the documentation that this feature exists, it would be nice if http://orientdb.com/docs/last/orientdb-etl.wiki/Transformer.html mentioned this at the top of the page. I apologize if I missed where it explicitly stated this feature exist ----- *iii) Specifying the language as "groovy" is giving me results for simple expressions.* { > "command": { > "language":"groovy", > "command":"1 +1 ", > "output":"foo" > } > }, [0:command] DEBUG executed command=groovy.1 +1, result=2 this is not documented. -------------------------------- 2) QUESTIONS OK, so now actually etl help questions: *i) I can't get any gremlin command to work, even ones that work for "groovy"* having: > { > "command": { > "language":"gremlin", > "command":"1 +1 ", > "output":"foo" > } > }, results in this error: Error in Pipeline execution: > com.orientechnologies.orient.core.command.OCommandExecutorNotFoundException: > Cannot find a command executor for the command request: gremlin.1 +1 > com.orientechnologies.orient.core.command.OCommandExecutorNotFoundException: > Cannot find a command executor for the command request: gremlin.1 +1 > at > com.orientechnologies.orient.core.command.OCommandManager.getExecutor(OCommandManager.java:102) > at > com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.command(OAbstractPaginatedStorage.java:1170) > at > com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:63) > at > com.orientechnologies.orient.etl.transformer.OCommandTransformer.executeTransform(OCommandTransformer.java:70) > at > com.orientechnologies.orient.etl.transformer.OAbstractTransformer.transform(OAbstractTransformer.java:37) > at > com.orientechnologies.orient.etl.OETLPipeline.execute(OETLPipeline.java:108) > at > com.orientechnologies.orient.etl.OETLProcessor.executeSequentially(OETLProcessor.java:480) > at > com.orientechnologies.orient.etl.OETLProcessor.execute(OETLProcessor.java:288) > at > com.orientechnologies.orient.etl.OETLProcessor.main(OETLProcessor.java:160) > ETL process halted: > com.orientechnologies.orient.etl.OETLProcessHaltedException: > com.orientechnologies.orient.core.command.OCommandExecutorNotFoundException: > Cannot find a command executor for the command request: gremlin.1 +1 ---- *ii) How to get a reference to the graph?* http://orientdb.com/docs/last/orientdb.wiki/Functions.html shows using orient.getGraph() but that has been returning errors for me, even if I specify "groovy" as the command langauge. Ideally, the variable "g" would be auto-bound to the graph instance for gremlin commands during etl. ---- *iii) is it possible to use output from sql command inside of a gremlin command?* If I do > { > "command": { > "language":"groovy", > "command":"${v1}.iterator()[0]", > "output":"foo" > } > }, I get the error: Error in Pipeline execution: > com.orientechnologies.orient.core.command.script.OCommandScriptException: > Error on evaluation of the script library. Error: > org.codehaus.groovy.control.MultipleCompilationErrorsException: startup > failed: > Script1.groovy: 1: unexpected token: @ @ line 1, column 55. > [email protected] I think the sql result is turned into a toString() representation when the variables are expanded, not sure about this though. ------- I apologize if I have missed anything in the documentation. If you need further examples/elaboration I will be happy to give any. Sorry for the wall of text. : ) Thanks, kyle -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
q_for_group.json
Description: Binary data
| a |
| b |
| c |
