Mapreduce Hadoop 的 PDF 输入格式
Posted
技术标签:
【中文标题】Mapreduce Hadoop 的 PDF 输入格式【英文标题】:PDF input format for Mapreduce Hadoop 【发布时间】:2015-12-09 13:07:01 【问题描述】:您好,我正在使用 PDFBOX 外部库来解析 mapreduce 中的 pdf 输入文件,但出现以下错误。
错误:java.lang.ClassNotFoundException: org.apache.pdfbox.pdmodel.PDDocument 在 java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) 在 com.nielsen.grfe.processor.mapreduce.Pdfparser$PdfLineRecordReader.initialize(Pdfparser.java:109) 在 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) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:415) 在 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>
【问题讨论】:
@prashant khunt 我在代码中添加了分布式缓存..我仍然面临同样的错误.. 【参考方案1】:1) 将pdfbox的jar文件也放入hadoop lib文件夹中。(使库jar在hadoop运行时可用)。
2) 重启 hadoop 集群。
或者
1) 确保您的 pdfbox 库对 hadoop 可用,方法是将其放置在分布式缓存中。
【讨论】:
org.apache.pdfbox.pdmodel.PDDocument 在 PDFBOX 1.8.10 中不可用。 根据 java 文档,pdfbox.apache.org/docs/1.8.10/javadocs/org/apache/pdfbox/… 该类存在于 PDFBOX 1.8.10 中。该类也存在于 jar 文件中。你能粘贴你得到的异常吗?以上是关于Mapreduce Hadoop 的 PDF 输入格式的主要内容,如果未能解决你的问题,请参考以下文章