Text类型
Text类型使用变长int型存储长度,所以Text类型的最大存储为2G.
BytesWritable类型
ByteWritable类型是一个二进制数组的封装类型,序列化格式是以一个4字节的整数(这点与Text不同,Text是以变长int开头)开始表明字节数组的长度,然后接下来就是数组本身
NullWritable类型
NullWritable是一个非常特殊的Writable类型,序列化不包含任何字符,仅仅相当于个占位符。你在使用mapreduce时,key或者value在无需使用时,可以定义为NullWritable。
ObjectWritable类型
ObjectWritable是其他类型的封装类,包括java原生类型,String,enum,Writable,null等,或者这些类型构成的数组。当你的一个field有多种类型时,ObjectWritable类型的用处就发挥出来了,不过有个不好的地方就是占用的空间太大,即使你存一个字母,因为它需要保存封装前的类型。GenericWritable类型
使用GenericWritable时,只需继承于他,他可以比objectwritable节省空间,推荐用generic代替object使用;
IntWritable和LongWritable还有对应的变长VIntWritable和VLongWritable类,固定长度还是变长的选用类似与数据库中的char或者vchar。