您好我使用PDFBOX外部库解析mapreduce中的pdf输入文件,但是我收到以下错误。
错误:java.lang.ClassNotFoundException: org.apache.pdfbox.pdmodel.PDDocument at java.net.URLClassLoader的$ 1.run(URLClassLoader.java:366) 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) 在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) 在com.nielsen.grfe.processor.mapreduce.Pdfparser $ PdfLineRecordReader.initialize(Pdfparser.java:109) at org.apache.hadoop.mapred.MapTask $ NewTrackingRecordReader.initialize(MapTask.java:548) 在org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:786) 在org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) 在org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:163) at java.security.AccessController.doPrivileged(Native Method) 在javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671) 在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 :(得分:0)
1)也将pdfbox的jar文件放在hadoop lib文件夹中。(在运行时将库jar提供给hadoop)。
2)重启hadoop集群。
或者
1)确保您的pdfbox库可以通过将其置于分布式缓存中来使用。