2015-07-22 67 views
0

我正在尝试为java操作运行oozie工作流程。我的Java代码可以从HDFS读取一个Word文件,并在HDFS上写回CSV文件。 我workflow.xml包含 -Oozie Java Action Error java.lang.NoClassDefFoundError:org/apache/poi/xwpf/usermodel/XWPFDocument

<?xml version="1.0" encoding="UTF-8"?> 
<workflow-app xmlns="uri:oozie:workflow:0.4" name="Word-Processing"> 
<start to="PathologyReport-Processing"/> 
<action name="PathologyReport-Processing"> 
<java> 
    <job-tracker>${jobTracker}</job-tracker> 
    <name-node>${nameNode}</name-node> 
<configuration> 
    <property> 
    <name>mapred.job.queue.name</name> 
    <value>${queueName}</value> 
    </property> 
    <property> 
    <name>oozie.libpath</name> 
    <value>${JarPath}</value> 
    </property> 
</configuration> 
<main-class>${MainClass}</main-class> 
<arg>-libjars</arg> 
<arg>${JarPath}</arg> 
<arg>${in}</arg> 
<arg>${out}</arg> 
</java> 
<ok to="end"/> 
<error to="fail"/> 
</action> 
<kill name="fail"> 
<message>Java Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> 
</kill> 
<end name="end"/> 
</workflow-app> 

我job.properties包含下面的代码

nameNode=hdfs://CTSC00385700501:8020 
jobTracker=CTSC00385700501:8032 
workflowRoot=PathologyReport 
queueName=default 
MainClass=SampleUnstructured 
JarPath=hdfs://localhost:8020/user/oozie/${workflowRoot}/lib/poi-3.9.jar 
in=hdfs://localhost:8020/user/oozie/${workflowRoot}/SampleWord.docx 
out=hdfs://localhost:8020/user/oozie/${workflowRoot}/output 
oozie.use.system.libpath=true 
oozie.libpath=hdfs://localhost:8020/user/oozie/share/lib/lib_20150513153121/ 
oozie.wf.application.path=hdfs://localhost:8020/user/oozie/${workflowRoot} 

我已指定为Apache POI jar文件的路径仍是不能够找到它。请帮我解决这个问题。 在此先感谢。

回答

0

你可以检查你提到的job.property配置。 我所知“${workflowRoot}”参数应在workflow.xml被mentnion和job.xml应该被定义为

<property> 
<name>workflowRoot</name> 
<value>${workflowRoot}</value> 
</property> 

然后尝试运行Oozie的工作,相信的时候,这些将工作smoth。

0

Oozie MapReduce cookbook

...Please note that the -libjars option supported by the Hadoop command-line is not supported by Oozie...

随着Oozie的,则应该在Action中添加<文件>元素引用JAR将要下载的,自动的,在最working- DIR-的最纱容器在运行时。