gpt4 book ai didi

hadoop - 在 Oozie 中运行 Hive Action 时出错

转载 作者:可可西里 更新时间:2023-11-01 14:44:54 24 4
gpt4 key购买 nike

我正在尝试通过 Oozie 运行 hive 操作。我的workflow.xml如下:

<workflow-app name='edu-apollogrp-dfe' xmlns="uri:oozie:workflow:0.1">
<start to="HiveEvent"/>
<action name="HiveEvent">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>oozie.hive.defaults</name>
<value>${hiveConfigDefaultXml}</value>
</property>
</configuration>
<script>${hiveQuery}</script>
<param>OUTPUT=${StagingDir}</param>
</hive>

<ok to="end"/>
<error to="end"/>
</action>

<kill name='kill'>
<message>Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name='end'/>

这是我的 job.properties 文件:

oozie.wf.application.path=${nameNode}/user/${user.name}/hiveQuery
oozie.libpath=${nameNode}/user/${user.name}/hiveQuery/lib
queueName=interactive

#QA
nameNode=hdfs://hdfs.bravo.hadoop.apollogrp.edu
jobTracker=mapred.bravo.hadoop.apollogrp.edu:8021

# Hive

hiveConfigDefaultXml=/etc/hive/conf/hive-default.xml

hiveQuery=hiveQuery.hql
StagingDir=${nameNode}/user/${user.name}/hiveQuery/Output

当我运行这个工作流程时,我遇到了这个错误:

ACTION[0126944-130726213131121-oozie-oozi-W@HiveEvent] Launcher exception: org/apache/hadoop/hive/cli/CliDriver
java.lang.NoClassDefFoundError: org/apache/hadoop/hive/cli/CliDriver

错误代码:JA018

错误信息:org/apache/hadoop/hive/cli/CliDriver

我不确定这个错误是什么意思。我哪里错了?

编辑

This link表示错误代码 JA018 是:JA018 is output directory exists error in workflow map-reduce action。但就我而言,输出目录不存在。这让事情变得更加困惑

最佳答案

我知道出了什么问题!

org/apache/hadoop/hive/cli/CliDriver 是执行 Hive Action 所必需的。从错误消息中可以明显看出这一点。此类位于此 jar 文件中:hive-cli-0.7.1-cdh3u5.jar。 (在我的 cloudera 版本中为 cdh3u5)。

Oozie 在 ShareLib 目录中检查这个 jar。该目录的位置通常在hive-site.xml中配置,属性名为oozie.service.WorkflowAppService.system.libpath,所以Oozie应该会找到jar容易地。

但在我的例子中,hive-site.xml 没有包含这个属性,所以 Oozie 不知道去哪里寻找这个 jar,因此 java.lang.NoClassDefFoundError

为了解决这个问题,我必须在我的 job.properties 文件中包含一个参数来将 oozie 指向 ShareLib 目录的位置,如下所示:oozie.libpath=${nameNode}/user/oozie/share/lib。 (取决于 SharedLib 目录在集群上的配置位置)。

这消除了错误!

关于hadoop - 在 Oozie 中运行 Hive Action 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18369605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com