Hadoop 数据类型
2015-10-30 00:00
369 查看
摘要: Hadoop内置的数据类型
BooleanWritable:标准布尔型数值
ByteWritable:单字节数值
DoubleWritable:双字节数值
FloatWritable:浮点数
IntWritable:整型数
LongWritable:长整型数
Text:使用UTF8格式存储的文本
NullWritable:当<key, value>中的key或value为空时使用
简单点讲,RPC框架就是可以让程序员来调用远程进程上的代码一套工具。有了RPC框架,咱程序员就轻松很多了,终于可以逃离多线程、Socket、I/O的苦海了。
RPC, 远程过程调用直观说法就是A通过网络调用B的过程方法。
通信中的协议是你自己规定的,比如你可以规定说当A向B发送数字1, B就打印hello world, 并返回数字1给A, 如果发送数字2,B就打印hello, guy.并发送数字2给A.
序列化------------>写 write(DataOutput out)
反序列化-------->读 readFields(DataInput in)
一. Hadoop内置的数据类型
BooleanWritable:标准布尔型数值
ByteWritable:单字节数值
DoubleWritable:双字节数值
FloatWritable:浮点数
IntWritable:整型数
LongWritable:长整型数
Text:使用UTF8格式存储的文本
NullWritable:当<key, value>中的key或value为空时使用
Hadoop中的数据类型都要实现Writable接口,以便用这些类型定义的数据可以被网络传输和文件存储。
二. 用户自定义数据类型的实现
1.继承接口Writable,实现其方法write()和readFields(), 以便该数据能被序列化后完成网络传输或文件输入/输出;
2.如果该数据需要作为主键key使用,或需要比较数值大小时,则需要实现WritalbeComparable接口,实现其方法write(),readFields(),CompareTo() 。
3.数据类型,必须要有一个无参的构造方法,为了方便反射,进行创建对象。
4.在自定义数据类型中,建议使用java的原生数据类型,最好不要使用Hadoop对原生类型进行封装的数据类型。eg.int x ;//IntWritable String s; //Text
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 Point3D (){}
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(大于)
}
}
BooleanWritable:标准布尔型数值
ByteWritable:单字节数值
DoubleWritable:双字节数值
FloatWritable:浮点数
IntWritable:整型数
LongWritable:长整型数
Text:使用UTF8格式存储的文本
NullWritable:当<key, value>中的key或value为空时使用
简单点讲,RPC框架就是可以让程序员来调用远程进程上的代码一套工具。有了RPC框架,咱程序员就轻松很多了,终于可以逃离多线程、Socket、I/O的苦海了。
RPC, 远程过程调用直观说法就是A通过网络调用B的过程方法。
通信中的协议是你自己规定的,比如你可以规定说当A向B发送数字1, B就打印hello world, 并返回数字1给A, 如果发送数字2,B就打印hello, guy.并发送数字2给A.
序列化------------>写 write(DataOutput out)
反序列化-------->读 readFields(DataInput in)
一. Hadoop内置的数据类型
BooleanWritable:标准布尔型数值
ByteWritable:单字节数值
DoubleWritable:双字节数值
FloatWritable:浮点数
IntWritable:整型数
LongWritable:长整型数
Text:使用UTF8格式存储的文本
NullWritable:当<key, value>中的key或value为空时使用
Hadoop中的数据类型都要实现Writable接口,以便用这些类型定义的数据可以被网络传输和文件存储。
二. 用户自定义数据类型的实现
1.继承接口Writable,实现其方法write()和readFields(), 以便该数据能被序列化后完成网络传输或文件输入/输出;
2.如果该数据需要作为主键key使用,或需要比较数值大小时,则需要实现WritalbeComparable接口,实现其方法write(),readFields(),CompareTo() 。
3.数据类型,必须要有一个无参的构造方法,为了方便反射,进行创建对象。
4.在自定义数据类型中,建议使用java的原生数据类型,最好不要使用Hadoop对原生类型进行封装的数据类型。eg.int x ;//IntWritable String s; //Text
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 Point3D (){}
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(大于)
}
}
相关文章推荐
- Visual EmbedLinux Tools:让vs支持嵌入式Linux开发
- PV千万级的架构如何实现
- Bloom Filter科普
- linux命令学习之路
- linux下配置yum源详解
- Redhat Enterprice Linux 6.2上安装g++编译器
- 【鸟哥的linux私房菜-学习笔记】vim重点回顾
- Docker私有仓库Registry的搭建验证
- Bash Shell编程要点小结
- win7宿主机访问linux 虚拟机的tomcat、nginx
- 每天一个Linux命令(7): cp
- 什么是shell,shell基础由浅入深,常用的shell命令、用法、技巧
- 58同城推荐系统架构设计与实现
- hadoop自定义排序
- 【跟我学apache-commons】【四】commons-io的使用
- 【跟我学apache-commons(三)】DBCP2.2---JavaSE配置DBCP连接池
- Linux下C语言GB2312转UTF8学习总结
- centos 6.5 配置samba 服务器
- nginx配置PATH_INFO模式
- 58架构演进