2015-12-09 68 views
0

嗨我anm使用PDFBOX外部库解析mapreduce中的pdf输入文件,但我收到以下错误。Mapreduce Hadoop的PDF输入格式

Error: java.lang.ClassNotFoundException: org.apache.pdfbox.pdmodel.PDDocument at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at com.nielsen.grfe.processor.mapreduce.Pdfparser$PdfLineRecordReader.initialize(Pdfparser.java:109) at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:548) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:786) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

我使用以下依赖

<dependency> 
     <groupId>org.apache.pdfbox</groupId> 
     <artifactId>pdfbox</artifactId> 
     <version>1.8.10</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.pdfbox</groupId> 
     <artifactId>fontbox</artifactId> 
     <version>1.8.5</version> 
    </dependency> 
+0

@prashant khunt我在代码中添加了分布式缓存......我仍然面临同样的错误.. – Barath

回答

0

1)将在Hadoop中lib目录下PDFBOX的jar文件。(使库jar在运行时可用到Hadoop的)。

2)重新启动hadoop集群。

或者

1)请确保您的PDFBOX库可通过将其放置在分布式缓存到Hadoop的。

+0

org.apache.pdfbox.pdmodel.PDDocument在PDFBOX 1.8.10中不可用。 – Barath

+0

根据java文档,https://pdfbox.apache.org/docs/1.8.10/javadocs/org/apache/pdfbox/pdmodel/PDDocument.html该类存在于PDFBOX 1.8.10中。该类也存在于jar文件中。你能否粘贴你得到的异常? –