hadoop自定义数据类型

来源:互联网 发布:enum class java 编辑:程序博客网 时间:2024/05/01 01:19

转载自http://blog.csdn.net/duguduchong/article/details/8652413

一.  Hadoop内置的数据类型

  • BooleanWritable:标准布尔型数值
  • ByteWritable:单字节数值
  • DoubleWritable:双字节数值
  • FloatWritable:浮点数
  • IntWritable:整型数
  • LongWritable:长整型数
  • Text:使用UTF8格式存储的文本
  • NullWritable:当<key, value>中的key或value为空时使用

二. 用户自定义数据类型的实现

     1.继承接口Writable,实现其方法write()和readFields(), 以便该数据能被序列化后完成网络传输或文件输入/输出;

     2.如果该数据需要作为主键key使用,或需要比较数值大小时,则需要实现WritalbeComparable接口,实现其方法write(),readFields(),CompareTo() 。

public class Point3D implements Writable<Point3D>{    private float x,y,z;    public float getX(){return x;}    public float getY(){return y;}    public float getZ(){return z;}    public void readFields(DataInput in) throws IOException    {        x = in.readFloat();        y = in.readFloat();        z = in.readFloat();    }    public void write(DataOutput out) throws IOException    {         out.writeFloat(x);         out.writeFloat(y);         out.writeFloat(z);    }}public class Point3D implements WritableComparable<Point3D>{    private float x,y,z;    public float getX(){return x;}    public float getY(){return y;}    public float getZ(){return z;}    public void readFields(DataInput in) throws IOException    {        x = in.readFloat();        y = in.readFloat();        z = in.readFloat();    }    public void write(DataOutput out) throws IOException    {         out.writeFloat(x);         out.writeFloat(y);         out.writeFloat(z);    }     public int CompareTo(Point3D p)    {        //具体实现比较当前的空间坐标点this(x,y,z)与指定的点p(x,y,z)的大小        // 并输出: -1(小于), 0(等于), 1(大于)    }}


0 0
原创粉丝点击