2016-06-09 1 views
1

Используя этот tutorial я создал рабочий процесс для улья сценария, но дает мне ошибку, когда я запускаю команду ниже:Ошибка: E0708: E0708: Invalid переход

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 Разъяснение

В случае успешного выполнения действия (улья), переход (КИ) является тестером узла, но у вас нет какого-либо узла с именем Tester. Это ошибка.

В идеале, если в рабочем процессе есть только одно действие, успешное выполнение действия должно завершиться, которое вы уже определили в своем рабочем процессе, но не использовали его. В случае сбоя вы хотите перейти на узел kill, который отсутствует в вашем рабочем процессе. Вам нужно добавить узел 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> 
+0

У вас есть правильный рабочий процесс, но ничего не сказано о том, что было ошибкой в ​​рабочем процессе OP. – YoungHobbit

+0

Похоже, что сообщение об ошибке указывает на неправильный переход по какой-либо причине, но в вашем «Oozie_test» у вас есть переход к ошибке «fail», но у вас нет узла «fail»; вы, вероятно, имели в виду «убить». –

+0

добавлен пояснение, проверьте пожалуйста. – YoungHobbit

3

В случае успешного выполнения действия (улья), переход (ok) является узлом Tester, но у вас нет какой-либо узел с именем Tester. Это ошибка.

В идеале, если в рабочем процессе есть только одно действие, успешное выполнение этого действия должно начинаться с end, которое вы уже определили в своем рабочем потоке, но не использовали его. В случае отказа вы хотите перейти на узел kill, который отсутствует в вашем рабочем процессе. Вам нужно добавить узел kill и передать вам действие улей в случае сбоя/ошибки.

@charantej обеспечил правильный рабочий процесс.

1

В переходе ok вы ссылаетесь на узел «Тестер», который не существует в рабочем процессе.

<ok to="Tester"/>

Когда любое действие выполняется успешно, он ищет узел данного в ОК перехода.

Либо определить новую акцию под названием «Tester» или дать ему <ok to="end"/> это пойдет на end узел.

0

Подтвердите, скопировали ли вы свой рабочий процесс.xml в hdfs. Вам не нужно копировать задание.свойства для hdfs, но нужно скопировать все другие файлы и библиотеки в hdfs