Mapreduce Hadoop的PDF输入格式

您好我使用PDFBOX外部库解析mapreduce中的pdf输入文件,但我收到以下错误 .

错误:java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)中的java.lang.ClassNotFoundException:org.apache.pdfbox.pdmodel.PDDocument 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)位于org的com.nielsen.grfe.processor.mapreduce.Pdfparser $ PdfLineRecordReader.initialize(Pdfparser.java:109)的java.lang.ClassLoader.loadClass(ClassLoader.java:358) . 位于org.apache.hadoop.mapred.MapTask.run的org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:786)的apache.hadoop.mapred.MapTask $ NewTrackingRecordReader.initialize(MapTask.java:548) MapTask.java:341)atg.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)在组织.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>

回答(1)

2 years ago

1)也将pdfbox的jar文件放在hadoop lib文件夹中 . (在运行时使库jar可用于hadoop) .

2)重启hadoop集群 .

要么

1)通过将pdfbox库放在分布式缓存中,确保您的pdfbox库可用于hadoop .