我正在创建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没有被执行。
你能帮忙吗?
答案 0 :(得分:0)
add jar
路径是本地计算机路径。
Oozie操作在datanode上运行。有可能它无法在datanode上找到jar并因此给出错误(检查mapreduce日志,你会找到原因)
如果这是一个问题,一个解决方法是将文件放入HDFS并在执行期间将其复制到datanode上的本地filesytem