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
使用这个 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