我想修改一下recordreader。所以首先,我想看看一个读写器是如何工作的。我试着读一个定制的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;
}
我没有改变任何其他功能。对于他们两个,当我给出两行输入时,我只得到Map器的第一行。我不明白错在哪里。我很抱歉,如果这是一个非常基本的问题,但我刚刚开始在hadoop编程,我在这一点上卡住了。提前谢谢。
我想做的修改:我想做一个多字计数。在一定距离内数一对单词(比如说2)。所以可以有两个单词隔两行的单词。所以我想在下一行的每一行中加入上一行的单词(比如2)。我计划在recordreader中这样做,因为它只是将两个字符串附加到一个字符串中,并且我可以存储上一次看到的内容。
暂无答案!
目前还没有任何答案,快来回答吧!