Глобальные конфигурации Oozie

На основании документа oozie я понимаю, что могу использовать глобальный элемент чтобы не повторять, скажем, спецификацию трекера заданий для каждого действия. Хотя, учитывая следующий простой рабочий процесс:

<workflow-app name="Test Hello World" xmlns="uri:oozie:workflow:0.4">
  <global>
    <job-tracker>${jobTracker}</job-tracker>
    <name-node>${nameNode}</name-node>
  </global>
  <start to="import"/>
  <action name="import">
    <shell xmlns="uri:oozie:shell-action:0.1">
      <exec>hw.sh</exec>
      <file>hw.sh#hw.sh</file>
    </shell>
    <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>

при запуске oozie validate я получаю:

Error: Invalid app definition, org.xml.sax.SAXParseException; lineNumber: 9; columnNumber: 19; cvc-complex-type.2.4.a: Invalid content was found starting with element 'exec'. One of '{"uri:oozie:shell-action:0.1":job-tracker}' is expected.

Таким образом, в основном, он по-прежнему ожидает элемент отслеживания работы в действии.

Если у вас есть какое-либо представление об этом поведении, ваши ответы будут высоко оценены. Спасибо.


person Murukan    schedule 11.02.2016    source источник
comment
Посмотрите на точное определение XML-схемы для действия Shell xmlns="uri:oozie:shell-action:0.1" (с акцентом на 0,1).   -  person Samson Scharfrichter    schedule 11.02.2016
comment
Кстати, проверка Oozie общеизвестно ненадежна.   -  person Samson Scharfrichter    schedule 11.02.2016
comment
@SamsonScharfrichter относительно вашего комментария выше, не могли бы вы привести пример случая, когда команда oozie validate ведет себя неожиданно.   -  person YoungHobbit    schedule 12.02.2016
comment
На самом деле я пробовал это один или два раза, несколько месяцев назад, а затем сдался, потому что проверка не удалась, но задание работало отлично. В любом случае известная часть подкреплена этой статьей InfoWorld infoworld.com/article/3019754/application-development/ (хотя статья довольно сурова на мой взгляд мнение - Узи хромает, да, но какие есть альтернативы?)   -  person Samson Scharfrichter    schedule 12.02.2016
comment
@SamsonScharfrichter Спасибо.   -  person Murukan    schedule 22.02.2016


Ответы (1)


Вот схема oozie shell action version 0.1. Вы заметите, что теги job-tracker и name-node требуют минимального появления 1 раз. То же самое относится и к тегу exec.

Источник: XML-схема оболочки

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:shell="uri:oozie:shell-action:0.1" elementFormDefault="qualified"
           targetNamespace="uri:oozie:shell-action:0.1">
    <xs:element name="shell" type="shell:ACTION"/>
    <xs:complexType name="ACTION">
      <xs:sequence>
            <xs:element name="job-tracker" type="xs:string" minOccurs="1" maxOccurs="1"/>
            <xs:element name="name-node" type="xs:string" minOccurs="1" maxOccurs="1"/>
            <xs:element name="prepare" type="shell:PREPARE" minOccurs="0" maxOccurs="1"/>
            <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="1"/>
            <xs:element name="configuration" type="shell:CONFIGURATION" minOccurs="0" maxOccurs="1"/>
             <xs:element name="exec" type="xs:string" minOccurs="1" maxOccurs="1"/>
            <xs:element name="argument" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="env-var" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="file" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="archive" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="capture-output" type="shell:FLAG" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="FLAG"/>
    <xs:complexType name="CONFIGURATION">
        <xs:sequence>
            <xs:element name="property" minOccurs="1" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"/>
                        <xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:string"/>
                        <xs:element name="description" minOccurs="0" maxOccurs="1" type="xs:string"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="PREPARE">
        <xs:sequence>
            <xs:element name="delete" type="shell:DELETE" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="mkdir" type="shell:MKDIR" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DELETE">
        <xs:attribute name="path" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="MKDIR">
        <xs:attribute name="path" type="xs:string" use="required"/>
    </xs:complexType>
</xs:schema>
person YoungHobbit    schedule 12.02.2016
comment
Спасибо, теперь я понял - person Murukan; 22.02.2016