Oozie shell动作无法在Linux中执行java

时间:2017-08-21 11:55:06

标签: java oozie oozie-workflow

我们在Oozie工作流程工作下提交。它在Windows集群中执行,但在Linux中它失败了。

<workflow-app xmlns='uri:oozie:workflow:0.3' name='shell-wf'>
    <start to='shell1' />
    <action name='shell1'>
        <shell xmlns="uri:oozie:shell-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                  <name>mapred.job.queue.name</name>
                  <value>${queueName}</value>
                </property>
            </configuration>
            <exec>Java</exec>
            <argument>A</argument>
            <argument>B</argument>
            <file>${EXEC}#${EXEC}</file> <!--Copy the executable to compute node's current working directory -->
        </shell>
        <ok to="end" />
        <error to="fail" />
    </action>
    <kill name="fail">
        <message>Script failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name='end' />
</workflow-app>   

但是当我执行上面的工作流文件时,抛出异常无法运行java程序。没有这样的文件或目录

1 个答案:

答案 0 :(得分:0)

如果shell脚本存在shell操作,并且shell脚本中的任何命令都失败,则必须在shell脚本中添加行#!/bin/bash -e以捕获转换的失败代码。然后它将在输出中捕获,只有您的工作流程将被终止。否则,即使shell操作可能失败,它也会退出成功。