您的位置:首页 > 运维架构

hadoop自定义数据类型

2013-04-22 15:48 537 查看
很多时候我们都需要实现自己的数据类型,可以通过实现Writable接口来实现自己的需要,其中只要实现两个方法即可,readFields(DataInput in) 方法和 write(DataOutput out)方法。举例如下供参考:

public class ImageVector extends Vector<Double> implements Writable
{

public double distance=0;
private static final long serialVersionUID = 1L;

public ImageVector() {

}
// 这里需要注意下自己定义的数据类型的需要传输的数据类型和内容。由于这里输出的的是一个集合,需要先读取长度,然后在读取每个元素的内容,最后是其他成员变量。
@Override
public void readFields(DataInput in) throws IOException
{

clear();

int size = in.readInt();
//     System.out.println("szie"+size);
int i=0;
while(i<size)
{
this.add(in.readDouble());
i++;
}
distance=in.readDouble();
}
//这里需要和read的读取的顺序保持一致。
@Override
public void write(DataOutput out) throws IOException
{
out.writeInt(this.size());
Iterator<Double>  iter=this.iterator();
while(iter.hasNext())
{
out.writeDouble(iter.next());
}
out.writeDouble(this.distance);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: