Created 08-17-2016 11:00 AM
I am trying to schedule a Oozie job (Shell Action).
But it is getting killed by going to <fail-output> section after script execution and <capture-output/> action.
Same job is however running fine from example folder.
Below is the job.properties we are using.
nameNode=hdfs://ip-xxx-xx-xx-xx
jobTracker=ip-xxx-xx-xx-xx
queueName=default
examplesRoot=examples
oozie.use.system.libpath=true
oozie.libpath=${nameNode}/user/oozie/share/lib
oozie.wf.application.path=${nameNode}/user/${user.name}/generic/oozie_dir
myscript=myscript.sh
myscriptPath=${oozie.wf.application.path}/myscript.shBelow is the workflow.xml we are using.
<workflow-app
xmlns="uri:oozie:workflow:0.4" name="shell-wf"> <start
to="shell-node"/> <action
name="shell-node">
<shell xmlns="uri:oozie:shell-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<!-- <exec>echo</exec> --><!--
<argument>my_output='Hello'</argument> -->
<exec>${myscript}</exec>
<file>${myscriptPath}</file>
<capture-output/>
</shell>
<ok to="check-output"/>
<error to="fail"/>
</action>
<decision name="check-output">
<switch>
<case to="end">
${wf:actionData('shell-node')['my_output'] eq 'Hello'}
</case>
<default to="fail-output"/>
</switch>
</decision> <kill
name="fail">
<message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill> <kill
name="fail-output">
<message>Incorrect output, expected [Hello] but was
[${wf:actionData('shell-node')['my_output']}]</message>
</kill> <end
name="end"/></workflow-app>
Created 08-18-2016 05:00 AM
@ Gaurab D can you share your shell script?
Looks like the script has been executed but the desired output which we are comparing are not correct?
Thanks
Created 08-18-2016 03:44 AM
Shell action will get executed on one of the data nodes. Have you tried executing the script there?
If you want to execute your script on a specific node I would look into using ssh action to ssh to the node you've succesffuly run the script on.
Created 08-18-2016 05:00 AM
@ Gaurab D can you share your shell script?
Looks like the script has been executed but the desired output which we are comparing are not correct?
Thanks
Created 08-18-2016 06:47 AM
Hi Murali, you are right. Script was executing but output wasn't matching with the below action.
${wf:actionData('shell-node')['my_output'] eq 'Hello'}
Now, I have changed the shell script as below and oozie job has finished successfully.
>> echo "my_output=Hello"
Thanks.