2016-06-09 37 views
1

使用這種tutorial我創建的工作流程爲蜂巢劇本,但給我的錯誤,當我運行下面的命令:錯誤:E0708:E0708:無效的過渡

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的工作流程,我是無法得到我到底錯在哪裏或者我錯過了什麼。

我試圖在互聯網上搜索這個解決方案,但找不到任何運氣。

請讓我知道如何解決這個錯誤,以及我需要的其他信息。

回答

1

爲@YoungHobbit解釋

在動作的成功執行(蜂巢),過渡的情況下(OK)是節點測試,但你沒有命名的測試儀的任何節點。這是錯誤。

理想情況下,如果您的工作流中只有一項操作,則操作的成功執行應該結束,您已經在工作流中定義了該操作,但未使用該操作。如果發生故障,您希望轉移到kill node,這在您的工作流程中缺少。如果發生故障/錯誤,您需要添加kill節點並將您的配置單元操作傳遞給它。 試試這個:

<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> 
+0

您得到了正確的工作流程,但沒有說什麼什麼是OP的工作流程中的錯誤。 – YoungHobbit

+0

由於某些原因,錯誤消息看起來像是指向錯誤的轉換,但在「Oozie_test」中,錯誤轉換將轉爲「失敗」,但您沒有「失敗」節點;你可能意思是「殺」。 –

+0

補充說明,請檢查。 – YoungHobbit

3

在動作的成功執行(蜂巢),轉換(ok)的情況下,以節點Tester,但你沒有任何節點命名爲Tester。這是錯誤。

理想情況下,如果您在工作流程中只有一個動作,那麼該動作的成功執行應轉至end,您已在工作流程中定義該動作,但未使用該動作。如果發生故障,您希望轉移到工作流程中缺少的kill節點。您需要添加kill節點並將您的配置單元操作傳遞給它,以防出現故障/錯誤。

@charantej提供了一個正確的工作流程。

1

ok轉換中,您指的是工作流中不存在的節點「測試器」。

<ok to="Tester"/>

當任何行動成功運行,它會在OK過渡給出的節點。

無論是定義一個名爲「測試」新動作或者給它<ok to="end"/>這會去end節點。

0

確認您是否將workflow.xml複製到hdfs。你不需要複製工作。屬性爲hdfs,但必須將所有其他文件和庫複製到hdfs