有没有办法运行脚本(pig,shell)来响应错误的发生?我的意思是:我在oozie(工作流管理器)中创建工作流,其中一个是task fail和call error,如果出现这个错误,我希望运行特定的脚本或其他任务。我想提供某种错误处理:当错误发生时-做点什么当错误2发生时-做其他事情我将非常感激你的帮助。
tkclm6bt1#
如果error1和error2发生在同一个工作流操作中,那么将您的工作流更改为java操作并在那里编写错误处理逻辑[这在工作流中是不可能的]。如果这些错误是不同操作的一部分,请尝试以下操作。试试这个:
<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>
xuo3flqw2#
对于错误处理,可以使用决策节点。例如:
<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”、“<”、“lt”、“==”、“eq”、“<=”、“le”、“>=”、“ge”、“!=”、“中的一个ne“,”[“,”+“,”-“,”*“,”/“,”div“,”%“,”mod“,”and“,”&&“,”or“,”| |“,”?“]希望这有帮助。
a11xaf1n3#
如果使用hue oozie工作流编辑器,则当前无法将“error”链接发送到“kill”节点之外的其他节点:https://issues.cloudera.org/browse/hue-1457
3条答案
按热度按时间tkclm6bt1#
如果error1和error2发生在同一个工作流操作中,那么将您的工作流更改为java操作并在那里编写错误处理逻辑[这在工作流中是不可能的]。如果这些错误是不同操作的一部分,请尝试以下操作。
试试这个:
xuo3flqw2#
对于错误处理,可以使用决策节点。例如:
您只需要捕获错误代码或错误消息。
注:expression lang(el)支持以下操作
[“}”、“>”、“gt”、“<”、“lt”、“==”、“eq”、“<=”、“le”、“>=”、“ge”、“!=”、“中的一个ne“,”[“,”+“,”-“,”*“,”/“,”div“,”%“,”mod“,”and“,”&&“,”or“,”| |“,”?“]
希望这有帮助。
a11xaf1n3#
如果使用hue oozie工作流编辑器,则当前无法将“error”链接发送到“kill”节点之外的其他节点:https://issues.cloudera.org/browse/hue-1457