javamapreduce程序处理pdf文件

rqenqsqc  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(359)

我需要用java解析mapreduce程序中的pdf文件。我正在使用CDH5.0.1进行群集设置。我有一个由fileinputformat扩展的自定义输入格式类,其中我重写了getrecordreader方法以返回自定义recordreader的一个示例,并重写了issplitable方法以防止文件不可拆分,如本文所建议的。
现在的问题是,在当前的cdh api中,getrecordreader返回接口org.apache.hadoop.mapred.recordreader,而上面so答案中扩展到自定义recordreader的接口是抽象类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;
    }

}

感谢任何帮助或指点,我在这里错过了什么。

bsxbgnwa

bsxbgnwa1#

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

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

使用这个新的api,您将得到下面的答案。在新api中 RecordReaderclass 不是 interface 更新
mapred与mapreduce api

相关问题