我已经为我们的Map程序编写了定制的recordreader,以便一次从源文件接收3条记录(3行),而不是默认情况下由textinputformat提供的1行记录。下面是示例代码段。
扩展文本输入格式:
public class NLinesInputFormat extends TextInputFormat{
@Override
public RecordReader<LongWritable, Text>; createRecordReader(InputSplit split, TaskAttemptContext context) {
return new NLinesRecordReader();
}
}
自定义recordreader类
public class NLinesRecordReader extends RecordReader<LongWritable, Text>{
private final int NLINESTOPROCESS = 3;
private LineReader in;
private LongWritable key;
private Text value = new Text();
private long start =0;
private long end =0;
通过添加以下代码行修改驱动程序以使用新的输入格式
job.setInputFormatClass(NLinesInputFormat.class);
但是上面的线抛出下面的错误
The method setInputFormatClass(Class<? extends InputFormat>) in the type Job is not applicable for the arguments (Class<NLinesInputFormat>)
我不确定是什么导致了这个错误。我没有混合任何旧的和新的api。我只使用新的api。请帮帮我。
1条答案
按热度按时间g6ll5ycj1#
您不需要编写自定义的nlineinpuformat,它已经可用了。
试试这个,