我想稍微修改一下记录阅读器。首先,我想了解一个记录阅读器如何适用于单行。我试着阅读一个定制的readrecorder。
@Override
public boolean nextKeyValue() throws IOException, InterruptedException {
boolean returnValue = lineRecord.nextKeyValue();
value.clear();
if (key == null) {
key = new IntWritable();
}
key.set(countKey++);
if (value == null) {
value = new Text();
}
value = lineRecord.getCurrentValue();
if(value != null)
return true;
return false;
}
我也尝试了另一个代码。
@Override
public boolean nextKeyValue() throws IOException, InterruptedException {
boolean returnValue = lineRecord.nextKeyValue();
value.clear();
if (key == null) {
key = new IntWritable();
}
key.set(countKey++);
if (value == null) {
value = new Text();
}
value = lineRecord.getCurrentValue();
return returnValue;
}
我没有更改任何其他功能。对于他们两个,当我给出两行输入时,我只获得映射器的第一行。我不明白错误是什么。我很抱歉,如果这是一个非常基本的问题,但我刚刚开始编写hadoop编码,此时我就陷入了困境。提前谢谢。
我想做的修改:我想做一个多字计数。在一定距离内计算一对单词(比如说2)。因此,可能存在跨越两行间隔的单词的单词。所以我想要的是在下一行的每一行中包含上一行中的单词(比如2)。我计划在recordreader中执行此操作,因为它只是将两个字符串附加到字符串中,我可以存储我之前看到的内容。