首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含fork/ join和decesion节点的oozie工作流

包含fork/ join和decesion节点的oozie工作流
EN

Stack Overflow用户
提问于 2018-01-09 14:09:20
回答 1查看 939关注 0票数 1
代码语言:javascript
复制
    <?xml version="1.0" encoding="UTF-8"?>
    <workflow-app xmlns="uri:oozie:workflow:0.5" name="shell-wf">


       <start to="fork_node" />

       <fork name = "fork_node">
          <path start = "query1"/>
          <path start = "query2"/>
       </fork>

       <action name="query1">
          <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>oozie.sh</exec>
             <file>oozie.sh#oozie.sh</file>
             <capture-output />
          </shell>
          <ok to="join_node" />
          <error to="postgre"/>
       </action>

       <action name="query2">
          <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>oozie2.sh</exec>
             <file>oozie2.sh#oozie2.sh</file>
             <capture-output />
          </shell>
          <ok to="join_node" />
          <error to="postgre" />
       </action>

       <join name = "join_node" to = "postgre"/>

          <action name="postgre">
          <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>oozie3.sh</exec>
             <file>oozie3.sh#oozie3.sh</file>
             <capture-output />
          </shell>
          <ok to="decesion-node" />
          <error to="fail" />
       </action>

       <decision name="decesion-node">
            <switch>
                <case to="end">
                  ${wf:lastErrorNode()} eq ""
                </case>
                <default to="fail"/>
            </switch>
        </decision>


        <kill name="fail">
          <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}  ]</message>
       </kill>
       <end name="end" />
    </workflow-app>

尝试运行上述workflow.xml时出现以下错误:从节点决策节点到节点末端的转换无效--在Fork/Join中不允许类型为' end‘的节点

我的用例是总是转换到postgre操作,而不管作业是被终止还是成功,一旦postre操作被执行,如果任何操作失败,它应该去kill node,否则到end node。

EN

回答 1

Stack Overflow用户

发布于 2018-01-10 16:02:21

当你在fork join中运行2个MR代码时,它需要你集群中的MR的可用性。所以当你运行超过2个MR代码时,它可能会在fork和join中失败。你可以分享你的外壳文件,或者你可以检查你是否正在从u .sh文件中执行正常的*.sh命令,或者从shell文件中执行任何MR代码。

因此,如果您正在运行MR代码,请尝试在您的集群中增加MR

谢谢,学习愉快:D

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48162314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档