我需要用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;
}
}
感谢任何帮助或指点,我在这里错过了什么。
1条答案
按热度按时间bsxbgnwa1#
问题是您使用了错误的api(旧的)
org.apache.hadoop.mapred.*
api)请使用新的api(org.apache.hadoop.mapreduce.*
)使用这个新的api,您将得到下面的答案。在新api中
RecordReader
是class
不是interface
更新mapred与mapreduce api