当我使用mahout和Hadoop做一些推荐时,我遇到了一个问题。
错误按摩是:
错误:java.io.IOException:错误的值类:org.apache.mahout.math.VarLongWritable不是类org ….
问题出在Reducer功能中。减速器(......)应该减少,这意味着:
public class FileToUserVectorReducer extends Reducer<VarLongWritable, VarLongWritable, VarLongWritable, VectorWritable> { @Override public void reduce(VarLongWritable userID, Iterable<VarLongWritable> itemPrefs, Context context) throws IOException, InterruptedException{ Vector userVector = new RandomAccessSparseVector(Integer.MAX_VALUE, 100); for(VarLongWritable itemPref : itemPrefs){ userVector.set((int)itemPref.get(), 1.0f); } context.write(userID, new VectorWritable(userVector)); } }
@Override非常有帮助。如果我使用@Override,它会在编译时给出错误消息。我认为一开始没必要,但这种经验证明了它的价值。