zoukankan      html  css  js  c++  java
  • 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(大于)

        }

    }

  • 相关阅读:
    struts2中form表单提交到action乱码
    struts2与ext一起用,找不到action
    Struts2学习
    Struts2之路第一天
    jsp&servlet 学生管理系统总结
    json初级
    AJAX
    问题---解决方式
    SQL语句优化
    Oracle内连接、外连接、右外连接、全外连接小总结
  • 原文地址:https://www.cnblogs.com/catWang/p/4367408.html
Copyright © 2011-2022 走看看