运行脚本以响应错误发生

时间:2014-07-08 11:17:04

标签: shell hadoop apache-pig oozie hue

有没有办法运行脚本(Pig,shell)以响应错误发生?我的意思是:我在Oozie(工作流管理器)中创建工作流,并且任务失败和调用错误之一,如果发生此错误,我想运行特定脚本或其他任务。我想提供某种错误处理:

  • 发生错误1时 - 执行某些操作
  • 当出现error2时 - 做其他事情

我将非常感谢你的帮助。

3 个答案:

答案 0 :(得分:0)

如果错误1& error2发生在同一个工作流操作中,然后将您的工作流程更改为java action&在那里写你的错误处理逻辑[它在工作流程中不可能]。如果这些错误是不同操作的一部分,请尝试以下操作。

试试这个:

<action name="firstjob">
    <map-reduce>
        <job-tracker>foo:9001</job-tracker>
        <name-node>bar:9000</name-node>
        <job-xml>job1.xml</job-xml>
    </map-reduce>
    <ok to="end"/>
    <error to="errorscript1"/>
</action>
<action name="secondjob">
    <map-reduce>
        <job-tracker>foo:9001</job-tracker>
        <name-node>bar:9000</name-node>
        <job-xml>job2.xml</job-xml>
    </map-reduce>
    <ok to="end"/>
    <error to="errorscript2"/>
</action>
<action name="errorscript1">
    <shell xmlns="uri:oozie:shell-action:0.2">
    </shell>
    <ok to="decide"/>
    <error to="fail"/>
</action>
<action name="errorscript2">
    <shell xmlns="uri:oozie:shell-action:0.2">
    </shell>
    <ok to="decide"/>
    <error to="fail"/>
</action>

答案 1 :(得分:0)

如果使用Hue Oozie工作流程编辑器,目前无法将“错误”链接发送到除“kill”节点之外的其他节点:https://issues.cloudera.org/browse/HUE-1457

答案 2 :(得分:0)

对于错误处理,您可以使用Decision nodes。例如:

<action name="Action1">
    <map-reduce>
        <job-tracker>foo:9001</job-tracker>
        <name-node>bar:9000</name-node>
        <job-xml>job1.xml</job-xml>
    </map-reduce>
    <ok to="NextAction"/>
    <error to="ErrorhandlingDecision"/>
</action>
<decision name="ErrorhandlingDecision">
    <switch>
        <case to="CorrectError1Node">
          ${wf:errorCode("SourceActionNodeName") eq "JA018"}
        </case>
        <case to="CorrectError2Node">
          ${errorMessage(wf:lastErrorNode()) eq "Error Msg Received"}
        </case>
        <default to="NextAction"/>
    </switch>
</decision>

您需要捕获错误代码或错误消息。

注意:Expression Lang(EL)支持以下操作

[“}”,“。”,“&gt;”,“gt”,“&lt;”,“lt”,“==”,“eq”,“&lt; =”,“le”中的一个,“&gt; =”,“ge”,“!=”,“ne”,“[”,“+”,“ - ”,“*”,“/”,“div”,“%”,“mod” “,”和“,”&amp;&amp;“,”或“,”||“,”?“]

希望得到这个帮助。