在Hadoop中对IntWritable,DoubleWritable等进行子类化

时间:2013-04-06 10:32:54

标签: java hadoop

我将IntWritableUserId一起进行了非常简单的操作:

public class UserId extends IntWritable {

    public UserId(int userId) {
        super(userId);
    }

    public UserId() {
        super();
    }
}

它完美地适用于我的Map / Reduce工作。但是当我从上一个作业的输出中读取第二个map / reduce作业时,我遇到了一个问题。然后我得到这样的错误:

java.lang.Exception: java.io.IOException: can't find class: 
com.foo.UserId because com.foo.UserId at
org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:371)

Caused by: java.io.IOException: can't find class:
com.foo.UserId because com.foo.UserId 
at org.apache.hadoop.io.AbstractMapWritable.readFields(AbstractMapWritable.java:206)

etc...

UserId用于SortedMapWritable(输出值),文件的输出/输入类型为SequenceFile*Format

如果我将类型更改回IntWritable,它将正常工作。问题是什么? UserId班还有更多工作要做吗?

谢谢!

0 个答案:

没有答案