处理 PDF 文件的 Java MapReduce 程序

标签 java pdf hadoop mapreduce hadoop-yarn

我需要使用 Java 在 mapreduce 程序中解析 PDF 文件。我正在使用 CDH 5.0.1 进行集群设置。我有一个由 FileInputFormat 扩展的自定义输入格式类,我在其中覆盖了 getRecordReader 方法以返回自定义 RecordReader 的实例,并覆盖了 isSplitable 方法以防止文件不可拆分,如本 SO answer 中所建议的那样.

现在的问题是,在当前的 CDH API getRecordReader 返回接口(interface) org.apache.hadoop.mapred.RecordReader 而上面的 SO 答案中扩展到自定义 Record Reader 的是一个抽象类 org.apache.hadoop.mapreduce .RecordReader.

我的自定义输入格式类:

import org.apache.hadoop.mapred.FileInputFormat;
import org.apache.hadoop.mapred.RecordReader;

public class PDFInputFormat extends FileInputFormat<Text, Text> {

@Override
public RecordReader<Text, Text> getRecordReader(InputSplit split, JobConf conf, Reporter reporter) throws IOException {
    return new PDFRecordReader();
    }

@Override
protected boolean isSplitable(FileSystem fs, Path filename) {
    return false;
    }

}

感谢有关我在这里缺少什么的任何帮助或指示。

最佳答案

问题是您使用了错误的 api(旧 org.apache.hadoop.mapred.*api) 请使用新的 API (org.apache.hadoop.mapreduce.*)

org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
org.apache.hadoop.mapreduce.RecordReader;

SO 使用这个新 API 回答您的问题。在新 API 中,RecordReaderclass 而不是 interface

更新

mapred vs mapreduce API

关于处理 PDF 文件的 Java MapReduce 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27106873/

相关文章:

c# - 如何在 C# 中使用 imageMagick

asp.net - 从 asp.net mvc 生成 PDF 文件

java - Hadoop 2.x 中的 Snappy 压缩错误

java - 我如何解析 JVM 编译器中的类/字段?

PATH 设置中的 java/javac 变化?

c# - 创建 PDF 时将首页旋转为横向

hadoop - 从映射器写入单个文件

hadoop - hadoop程序运行时是否可以自动添加节点

Java:如何在不迭代的情况下从 List<T> 转换为 Map<f1(T), List(f2(T))>

java - 如何在 Java 中执行 Oracle PLSQL block