Ozzie 流无法使用 UDF 添加命令的 hive-ql
Posted
技术标签:
【中文标题】Ozzie 流无法使用 UDF 添加命令的 hive-ql【英文标题】:Ozzie flow not able to hive-ql having UDF add command 【发布时间】:2014-03-21 18:30:46 【问题描述】:我正在创建 oozie 工作流,我按顺序调用 hive sqls。
第一个 sql 具有简单的转换逻辑。而第二个有临时函数创建命令和添加查找文件命令。我在 sql 中进一步使用这个 UDF。
添加 JAR **;
将临时函数 XXXXX 创建为 ...;
添加文件*;
<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] ACTION[-] E1100:命令前置条件在执行前不成立,[, coord action is null],错误码:E1100
在执行 ADD UDF 的命令时抛出错误。(ADD JAR,CREATE TEMPORARY,ADD FILE)。
我搜索了这个错误,我得到了一些忽略错误的链接!!!
但是,我使用第二个 Hql 脚本中给出的 hive UDF 的实际 sql 没有被执行。
你能帮忙吗?
【问题讨论】:
【参考方案1】:add jar
路径是本地机器路径。
Oozie 操作在数据节点上运行。有可能它在datanode上找不到jar,因此会出错(检查mapreduce日志,你会找到原因)
如果这是一个问题,一种解决方法是将文件放入 HDFS 并在执行期间将其复制到数据节点上的本地文件系统
【讨论】:
以上是关于Ozzie 流无法使用 UDF 添加命令的 hive-ql的主要内容,如果未能解决你的问题,请参考以下文章
MySQL UDF 插件无法执行 Shell 命令(使用 system() 或 execl())
UnsupportedOperationException:无法评估表达式:.. 添加新列 withColumn() 和 udf()