2014-12-19 59 views
2

我试图通过oozie在使用HDP 2.2的亚马逊上运行一个配置单元作业。 运行作业的用户是ec2用户。 当我运行一个 “DRYRUN” 我得到以下错误:亚马逊上的Oozie Hive作业错误

Oozie的工作-oozie HTP://〜内部:11000/Oozie的-config job.properties -dryrun

Error: E0803 : E0803: IO error, Encountered ": java .", expected one of ["}", ".", ">", "gt", "<", "lt", "==", "eq", "<=", "le", ">=", "ge", "!=", "ne", "[", "+", "-", "*", "/", "div", "%", "mod", "and", "&&", "or", "||", ":", <IDENTIFIER>, "(", "?"] 

有没有人见过这之前? 以下是我的工作表。

<workflow-app name="OozieWorkflow" xmlns="uri:oozie:workflow:0.4"> 
<start to="load" /> 
<action name="load"> 
    <hive xmlns="uri:oozie:hive-action:0.2"> 
     <job-tracker>${jobTracker}</job-tracker> 
     <name-node>${nameNode}</name-node> 
     <job-xml>/user/ec2-user/hive-site-oozie.xml</job-xml> 
     <script>/user/ec2-user/loadData.hql</script> 
     <file>/user/ec2-user/hive-site-oozie.xml#hive-site-oozie.xml</file> 
    </hive> 
    <ok to="end" /> 
    <error to="kill" /> 
</action> 
<kill name="kill"> 
    <message>Action failed, error 
     message[${wf:errorMessage(wf:lastErrorNode())}]</message> 
</kill> 
<end name="end" /></workflow-app> 

我的工作性质是:

nameNode=hdfs://~internal:8020 
jobTracker=http://~internal:8050 
queueName=default 
#oozie.libpath= 
oozie.use.system.libpath=true 
oozie.wf.application.path=${nameNode}/user/ec2-user 
+0

难道你不会忘记''结束标记吗?或者你是否忽略了这个问题? – arghtype 2014-12-19 12:44:25

+0

对不起,从编辑问题omnited编辑问题 – Dimitri 2014-12-19 13:40:33

+0

这似乎很奇怪,错误消息是关于令牌'java',但该字符串不会出现在您提供的内容中。它是否在您的Hive操作中引用的文件中? – 2015-02-16 19:46:55

回答

2

我发现这个错误的原因之一。至少这是我运行oozie工作时发生的奇怪而无害的EL错误的原因。

你有就行了蜂房的site.xml

<job-xml>/user/ec2-user/hive-site-oozie.xml</job-xml> 

在hdp2.2蜂巢-site.xml中包含此元素:

<property> 
    <name>hive.server2.logging.operation.log.location</name> 
    <value>${system:java.io.tmpdir}/${system:user.name}/operation_logs</value> 
</property> 

出于某种原因Oozie的也评估所提供的job-xml中的表达式。注意$ {system:java.io.tmpdir},它不是一个有效的Oozie EL表达式。

我不知道如何开避免从提供就业XML

+0

我刚刚从上传的hive-site.xml中删除这个NVP也没有问题。我使用HDP 2.3作为参考。 – 2015-11-10 18:22:27

2

排除正如selle说,值这个错误,问题就来了,从这个属性从蜂巢-site.xml文件提供了你:

<property> 
    <name>hive.server2.logging.operation.log.location</name> 
    <value>${system:java.io.tmpdir}/${system:user.name}/operation_logs</value> 
</property> 

如果您有Oozie的特定蜂房site.xml文件(这似乎是这种情况),你可以使用EL表达式创建的EL表达式。 我换成这个属性与此一:

<property> 
    <name>hive.server2.logging.operation.log.location</name> 
    <value>${'${'}system:java.io.tmpdir}/${'${'}system:user.name}/operation_logs</value> 
    </property> 

这是一个有点笨拙,但它为我工作!