2013-11-11 2 views
1

Когда я попытался запустить oozie действие улей со следующим кодомНужно ли поддерживать определенный порядок внутри контента действия oozie?

<action name="Hive-Node"> 
    <hive xmlns="uri:oozie:hive-action:0.2"> 
     <job-tracker>${jobTracker}</job-tracker> 
     <name-node>${nameNode}</name-node> 
     <job-xml>hive-site.xml</job-xml> 
     <prepare> 
      <mkdir path="${nameNode}/hive/output"/> 
     </prepare> 
     <configuration> 
      <property> 
       <name>mapred.job.queue.name</name> 
       <value>${queueName}</value> 
      </property> 
      <property> 
       <name>hive.insert.into.multilevel.dirs</name> 
       <value>true</value> 
      </property> 
      <property> 
       <name>hbase.zookeeper.quorum</name> 
       <value>${hbaseZooQuorum}</value> 
      </property> 
     </configuration> 
     <script>${HIVE_QUERY_FILE}</script> 
    </hive> 
    <ok to="End" /> 
    <error to="Fail" /> 
</action> 

я получил следующее сообщение об ошибке:

Error: E0701 : E0701: XML schema error, cvc-complex-type.2.4.a: Invalid content was found starting with element 'prepare'. One of '{"uri:oozie:hive-action:0.2":configuration, "uri:oozie:hive-action:0.2":script}' is expected. 

Но после того, как я изменил порядок декларирования тегов внутри улья действия, т.е. перемещены <job-xml>...</job-xml> после <prepare>...</prepare>, он отлично работает.

Необходимо ли следовать этим заказам внутри мероприятий oozie?

ответ

4

С Oozie Hive Action Documentation,

Схема использует

<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="hive:PREPARE" minOccurs="0" maxOccurs="1"/> 
    <xs:element name="job-xml" type="xs:string" minOccurs="0" maxOccurs="1"/> 
    <xs:element name="configuration" type="hive:CONFIGURATION" minOccurs="0" maxOccurs="1"/> 
    <xs:element name="script" type="xs:string" minOccurs="1" maxOccurs="1"/> 
    <xs:element name="param" 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:sequence> 

элемент xs:sequence который as per W3Schools,

The sequence element specifies that the child elements must appear in a sequence. Each child element can occur from 0 to any number of times.

И мы можем видеть, как на схеме для Улей-Action <prepare> приходит до <job-xml> в последовательности

Смежные вопросы