org.apache.hadoop.io包中有四种Writable集合类型,分别是ArrayWritable,TwoDArrayWritable,MapWritable和SortedMapWritable。
ArrayWritable和TwoDArrayWritable是Writable针对数组和二维数组(数组的数组)实例的实现。所有对ArrayWritbale或者TwoDArayWritable的使用都必须实例化相同的类,这是在构造时指定的,如下所示:
ArrayWritable writable=new ArrayWritable(Text.class);
在上下文中,Writable由类型来定义,如在SequenceFile中的键或值,或一般作为MapReduce的输入,需要继承ArrayWritable(或恰当使用TwoDArrayWritable)以静态方式来设置类型。例如:
public class TextArrayWritable extends ArrayWritable
{
public TextArrayWritable()
{
super(Text.class);
}
}
ArrayWritable和TwoDArrayWritable都有get()和set()方法,也有toArray()方法,后者用于创建数组(或者二维数组)的浅拷贝(shallow copy)。
MapWritable和SortedMapWritable分别是java.util.Map(Writable,Writable)和java.util.SortedMap(WritableComparable,Writable)的实现。每个键/值字段的类型都是此字段序列化格式的一部分。类型保存为单字节,充当一个数组类型的索引。数组是用org.apache.hadoop.io包中的标准类型来填充的,但自定义的Writable类型也是可以的,编写一个头,为非标准类型编码类型数组。
阅读(2181) | 评论(0) | 转发(0) |