2

我是 Hive 和 Oozie 的新手。我正在尝试通过 Oozie 运行 Hive 脚本。这是我得到的错误。

错误:E0701:E0701:XML 架构错误,cvc-complex-type.2.4.c:匹配的通配符是严格的,但找不到元素“hive”的声明。

这是我的工作流.xml:

  <?xml version="1.0" encoding="UTF-8"?>
  <workflow-app xmlns="uri:oozie:workflow:0.2" name="temp-hive">
  <start to="hive-ex"/>
  <action name="hive-ex">
  <hive xmlns="uri:oozie:hive-action:0.2">
  <job-tracker>${jobTracker}</job-tracker>
  <name-node>${nameNode}</name-node>
  <configuration>
  <property>
  <name>mapred.job.queue.name</name>
  <value>default</value>
  </property>
  <property>
  <name>oozie.hive.defaults</name>
   <value>/home/hduser/hive/conf/hive-site.xml</value>
  </property>
  </configuration>
  <script>ooziequery.q</script>
  </hive>
  <ok to="end"/>
  <error to="fail"/>
  </action>
  <kill name="fail">
  <message>Hive script failed!!</message>
  </kill>
  <end name="end"/>
  </workflow-app>

我该如何解决这个问题?

4

1 回答 1

2

您应该检查 oozie:workflow 和 hive-action 版本。

就我而言,我使用 CDH4.3 发行版并放置以下版本:

0.4 用于 oozie 工作流,0.2 用于 Hive 操作

<workflow-app name="test-hive" xmlns="uri:oozie:workflow:0.4">
<start to="hive-request"/>
<action name="hive-request">
    <hive xmlns="uri:oozie:hive-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node> 
    <job-xml>conf/hive-site.xml</job-xml>
        <script>lib/script.sql</script>
    </hive>
    <ok to="end"/>
    <error to="fail"/>
</action>
<!-- Fail bloc, redirect every action here when an error occurs-->
<kill name="fail">
    <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>

于 2013-08-14T10:41:35.453 回答