E0701 OOZIE工作流中的XML架构错误

时间:2014-05-14 07:50:26

标签: sqoop oozie

以下是我的workflow.xml

<workflow-app xmlns="uri:oozie:workflow:0.3" name="import-job">
<start to="createtimelinetable" />
 <action name="createtimelinetable">
   <sqoop xmlns="uri:oozie:sqoop-action:0.3">
              <job-tracker>${jobTracker}</job-tracker>
              <name-node>${nameNode}</name-node>
              <configuration>
                  <property>
                      <name>mapred.compress.map.output</name>
                      <value>true</value>
                  </property>
              </configuration>
              <command>import --connect jdbc:mysql://10.65.220.75:3306/automation --table ABC --username root</command>
   </sqoop>
   <ok to="end"/>
   <error to="end"/>
 </action>
 <end name="end"/>
</workflow-app>

尝试提交作业时出现以下错误:

错误:E0701:E0701:XML架构错误,cvc-elt.1.a:找不到元素&#39; action&#39;的声明。

但是,oozie验证workflow.xml返回: 有效的worflow-app

过去曾遇到并解决过类似问题的人?

3 个答案:

答案 0 :(得分:3)

确认您是否已将workflow.xml复制到hdfs。您不需要将job.properties复制到hdfs,但必须将所有其他文件和库复制到hdfs

答案 1 :(得分:0)

对于通过谷歌搜索以下错误消息到达此处的用户,是解决Oozie模式问题的一般方法:

一旦您的工作流程.xml完成​​,最好的方法是根据oozie XSD模式文件对其进行验证,而不是提交Ooozie作业并稍后处理问题。

关于什么是XSD模式的说明: XSD模式是一种叙述性的验证文件,

a。标签顺序

b。标签是否应存在

c。标签等中有效的子标签是什么?

如何根据XSD验证工作流XML?

a。找出特定的XSD,这在xmlns(xml名称空间)属性中可以看到

<工作流程应用名称='FooBarWorkFlow' xmlns =“ uri:oozie:workflow:0.4”>

在这种情况下,它是uri:oozie:workflow:0.4。找到uri:oozie:workflow:0.4的XSD文件(可以从Oozie官方网站的附录中获取,也可以通过Googling轻松找到)

b。 XML验证站点很多(例如https://www.liquid-technologies.com/online-xsd-validator),提供您的工作流程XML文件,XSD文件并进行验证

工作流XML文件中的错误将与行和列信息一起列出。纠正这些问题,现在使用有效的Workflow XML文件来避免oozie中的架构验证错误。

答案 2 :(得分:0)

oozie validate some_workflow.xml

告诉您行号,比记录输出更容易理解。