• Hadoop数据类型介绍


    我们知道hadoop是由Java 编程写的。因此我们使用Java开发环境来操作HDFS,编写mapreduce也是很自然的事情。但是这里面hadoop却对Java数据类型进行了包装,那么hadoop的数据类型与Java那些数据类型对应。下面做一些对比:

    一、 Hadoop数据类型介绍:

    (1)在hadoop.io包,主要分为基本类型和其它类型。


    (2)基本类型(hadoop:java):
    数据类型                      hadoop数据类型:                                   Java数据类型


       布尔型                      *BooleanWritable                                           boolean    
       整型                         *IntWritable:                                                   int
       浮点float                   *FloatWritable:                                                float
       浮点型double            *DoubleWritable:                                            double
       整数类型byte           *ByteWritable:                                                byte
    这里说明一下,hadoop数据库类型与Java数据类型之间如何转换:
    有两种方式
    1.通过set方式
    2.通过new的方式。


    (3)其它(部分):
    *Text:hadoop:中对应Java数据类型string
    *ArrayWritable:  中对应Java数据类型数组。

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

         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(大于)

        }

    }

  • 相关阅读:
    syslog
    setting-url配置
    计划任务_crontab
    css
    git之一: git基础
    LeetCode 第 151 场周赛
    LeetCode 第 149 场周赛
    LeetCode 第 150 场周赛
    【解决方案】SpringCloud项目优雅发版、部署
    NAT(地址转换技术)学习
  • 原文地址:https://www.cnblogs.com/catWang/p/4367408.html
Copyright © 2020-2023  润新知