Ozzie流无法使用UDF添加命令进行hive-ql

时间:2014-03-21 18:30:46

标签: hadoop oozie hiveql

我正在创建oozie工作流程,我按顺序调用hive sqls。

第一个sql有简单的转换逻辑。第二个具有临时功能创建命令并添加查找文件命令。我在sql中进一步使用这个UDF。

ADD JAR * *;

创建临时功能XXXXX AS ...;

添加文件 * ;

<workflow-app xmlns="uri:oozie:workflow:0.4" name="hive-wf">
    <credentials>
        <credential name="hive_credentials" type="hcat">
            <property>
                <name>hcat.metastore.uri</name>
                <value>XXXXXXXX</value>
            </property>
            <property>
                <name>hcat.metastore.principal</name>
                <value>XXXXXXXX</value>
            </property>
        </credential>
    </credentials>
    <start to="hive-1" />
    <action name="hive-1" cred="hive_credentials">
        <hive xmlns="uri:oozie:hive-action:0.2">
            <job-tracker>XXXXXXX</job-tracker>
            <name-node>XXXXXXX</name-node>
            <job-xml>/XXXXXX/oozie/oozie-hive-site.xml</job-xml>
            <configuration>
               <property>
                <name>mapred.job.queue.name</name>
                <value>default</value>
            </property>
        </configuration>
        <script>/XXXXXXX/hive_1.sql</script>
    </hive>
    <ok to="hive-2" />
    <error to="fail" />
</action>
<action name="hive-2" cred="hive_credentials">
    <hive xmlns="uri:oozie:hive-action:0.2">
        <job-tracker>XXXXXXXX</job-tracker>
        <name-node>XXXXXXXX</name-node>
        <job-xml>/XXXXXX/oozie/oozie-hive-site.xml</job-xml>
        <configuration>
            <property>
                <name>mapred.job.queue.name</name>
                <value>default</value>
            </property>
        </configuration>
        <script>/XXXXXXX/hive_2.sql</script>
    </hive>
    <ok to="end" />
    <error to="fail" />
</action>
<kill name="fail">
    <message>Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end" />

第一个hql脚本成功执行。执行第二个hql脚本时,工作流被终止,从而产生以下错误。

JOB [0000044-140317190624992-oozie-oozi-W]行动[ - ] E1100:执行前命令前提条件未成立,[,coord action为null],错误代码:E1100

在向ADD UDF执行命令时抛出错误。(ADD JAR,CREATE TEMPORARY,ADD FILE)。

我搜索了这个错误,我得到了一些忽略错误的链接!!!

但是,我在第二个Hql脚本中使用hive UDF的实际sql没有被执行。

你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

add jar路径是本地计算机路径。

Oozie操作在datanode上运行。有可能它无法在datanode上找到jar并因此给出错误(检查mapreduce日志,你会找到原因)

如果这是一个问题,一个解决方法是将文件放入HDFS并在执行期间将其复制到datanode上的本地filesytem