mapreduce:nlineinputformat抛出错误

rsaldnfx  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(313)

我已经为我们的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。请帮帮我。

g6ll5ycj

g6ll5ycj1#

您不需要编写自定义的nlineinpuformat,它已经可用了。
试试这个,

Configuration conf = new Configuration();
    conf.setInt(
            "mapreduce.input.lineinputformat.linespermap", 3);
    Job job = new Job(conf, "word count");
    job.setInputFormatClass(NLineInputFormat.class);

相关问题