【问题标题】:Oozie Java Action Error java.lang.NoClassDefFoundError: org/apache/poi/xwpf/usermodel/XWPFDocumentOozie Java 操作错误 java.lang.NoClassDefFoundError: org/apache/poi/xwpf/usermodel/XWPFDocument
【发布时间】:2015-07-22 05:53:14
【问题描述】:

我正在尝试为 java 操作运行 oozie 工作流。我的 Java 代码可以从 HDFS 读取 Word 文件并在 HDFS 上写回 CSV 文件。 我的 workflow.xml 包含 -

<?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 文件的路径,但仍然无法找到它。请帮我解决这个问题。 提前致谢。

【问题讨论】:

    标签: java apache hadoop oozie


    【解决方案1】:

    你能检查一下你提到的 job.property 配置吗? 据我所知,“${workflowRoot}”参数应在 workflow.xml 中提及,并且 job.xml 应定义为

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

    然后尝试运行 oozie 作业,相信这些会顺利运行。

    【讨论】:

      【解决方案2】:

      来自Oozie MapReduce cookbook

      ...请注意 Hadoop 支持的 -libjars 选项 Oozie 不支持命令行...

      使用 Oozie,您应该在 Action 中添加一个 元素来引用 JAR-to-be-downloaded-automagically-in-the-working-dir-of-the-运行时的 YARN 容器。

      【讨论】:

        猜你喜欢
        • 2011-09-21
        • 2017-10-26
        • 2019-05-27
        • 1970-01-01
        • 2016-03-29
        • 1970-01-01
        • 2019-06-14
        • 1970-01-01
        • 2018-05-24
        相关资源
        最近更新 更多