Hadoop的key和value的传递序列化需要涉及两个重要的接口Writable和WritableComparable。
1> Writable:
public void write(DataOutput out){}
public void readFields(DataInput in){}
也就是读数据和写数据的方式
2> WritableComparable:
public void write(DataOutput out){}
public void readFields(DataInput in){}
public int compareTo(InfoBean o){}
也就是比Writable多了一个compareTo方法,这个的用途是是为了确定是不是相同的key,因此得出如下结论:
hadoop为Key的数据类型必须实现WritableComparable,而Value的数据类型只需要实现Writable即可,能做Key的一定可以做Value,能做Value的未必能做Key.
MR的任意Key和Value必须实现Writable接口.
MR的任意key必须实现WritableComparable接口.
单写一个value的封装可以只继承writable.(建议全部继承WritableComparable)