Error: E0708 : E0708: Invalid transition

Error: E0708 : E0708: Invalid transition

使用这个 tutorial 我为配置单元脚本创建了工作流,但是当我 运行 下面的命令时给我错误:

 oozie job -oozie http://xxx.xx.xx.xx:11000/oozie -config  /home/ec2-user/ankit/oozie_job1/job.properties -submit

我得到的错误是:

Error: E0708 : E0708: Invalid transition, node [Oozie_test] transition [Tester]

我的工作流程代码如下:

<workflow-app name="Tester" xmlns="uri:oozie:workflow:0.1">
<start to="Oozie_test"/>
<action name="Oozie_test">
<hive xmlns="uri:oozie:hive-action:0.2">
 <job-tracker>xxx.xx.xx.xx:8021</job-tracker>
 <name-node>xxx.xx.11.xx:8020</name-node>
 <configuration>
    <property>
         <name>oozie.hive.defaults</name>
         <value>/home/ec2-user/ankit/oozie_job1/hive-default.xml</value>
    </property>
 </configuration>
 <script>hive_job1.hql</script>
</hive>
<ok to="Tester"/>
<error to="fail"/>
</action>
<end name="end"/>
</workflow-app>

因为这是我的第一个 oozie 工作流程,所以我不知道我到底哪里出错了或者我错过了什么。

我试图在互联网上搜索此问题的解决方案,但找不到任何运气。

请告诉我如何解决此错误以及我这边还需要哪些其他信息。

@YoungHobbit 解释

在成功执行操作(hive) 的情况下,转换(ok) 到节点Tester,但您没有任何名为Tester 的节点。那是错误。

理想情况下,如果您的工作流中只有一个动作,那么成功执行该动作应该结束,您已经在工作流中定义但没有使用它。万一失败,你想转移到杀死节点,这在你的工作流程中是缺失的。在 failure/error 的情况下,您需要添加一个 kill 节点并将您的 hive 操作传输到它。 试试这个:

<workflow-app name="Tester" xmlns="uri:oozie:workflow:0.1">
<start to="Oozie_test"/>
<action name="Oozie_test">
<hive xmlns="uri:oozie:hive-action:0.2">
 <job-tracker>xxx.xx.xx.xx:8021</job-tracker>
 <name-node>xxx.xx.11.xx:8020</name-node>
 <configuration>
    <property>
         <name>oozie.hive.defaults</name>
         <value>/home/ec2-user/ankit/oozie_job1/hive-default.xml</value>
    </property>
 </configuration>
 <script>hive_job1.hql</script>
</hive>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
        <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
        </kill>
        <end name='end' />
</workflow-app>

在成功执行操作 (hive) 的情况下,转换 (ok) 到节点 Tester,但您没有任何名为 Tester 的节点。那就是错误。

理想情况下,如果您的工作流中只有一个操作,那么成功执行该操作应该转到 end,您已经在工作流中定义但没有使用它。万一失败,您想转移到 kill 节点,这在您的工作流程中是缺失的。在 failure/error.

的情况下,您需要添加一个 kill 节点并将配置单元操作传递给它

@charantej 提供了正确的工作流程。

ok 转换中,您指的是工作流中不存在的节点 'Tester'。

<ok to="Tester"/>

当任何操作成功运行时,它会查找 ok 转换中给出的节点。

要么定义一个名为 'Tester' 的新操作,要么给它 <ok to="end"/> 这将转到 end 节点。

确认您是否已将 workflow.xml 复制到 hdfs。您不需要将 job.properties 复制到 hdfs,但必须将所有其他文件和库复制到 hdfs