我正在使用MapReduce在映射器阶段训练一些模型。为此,我需要在mapper阶段找到最后一行输入。为此,我使用以下函数:Context.nextKeyValue()
返回布尔值:True
如果之后有值,则False
。
在我的示例中,我的数据被分成HDFS中的6个不同块。其中5个具有相同的大小,最后一个稍微小一些。我们知道每个映射器只能在一个块上工作。
当我尝试函数Context.nextKeyValue()
时,它适用于5个第一个映射器(具有相同块大小的映射器),但不适用于函数始终返回True
的最后一个映射器! / p>
我读到了机制:
public void run(Context context) throws IOException, InterruptedException{
setup(context);
while(context.nextKeyValue()){
map(context.setCurrentKey(),context.getCurrentValue(),context)
}
cleanup(context);
}
我的问题是,我做错了什么吗?有人知道发生了什么事吗?
提前致谢!