Chinaunix首页 | 论坛 | 博客
  • 博客访问: 793678
  • 博文数量: 247
  • 博客积分: 166
  • 博客等级: 入伍新兵
  • 技术积分: 2199
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-15 16:10
文章分类

全部博文(247)

文章存档

2017年(1)

2015年(63)

2014年(80)

2013年(94)

2012年(9)

分类: HADOOP

2013-07-31 12:00:58

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类型也是可以的,编写一个头,为非标准类型编码类型数组。
阅读(2031) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~