MapReduce 学习2 ---- 序列化学习

hadoop序列化的特点:

序列化格式特点:
1.紧凑:高效使用存储空间。
2.快速:读写数据的额外开销小
3.可扩展:可透明地读取老格式的数据
4.互操作:支持多语言的交互

hadoop序列化与java序列化的最主要的区别是:在复杂类型的对象下,hadoop序列化不用像java对象类一样传输多层的父子关系,需要哪个属性就传输哪个属性值,大大的减少网络传输的开销。

 

hadoop序列化的作用:

1.序列化的在分布式的环境的作用:进程之间的通信,节点通过网络之间的

2.hadoop节点之间数据传输

节点1:(序列化二进制数据) ------->(二进制流消息)   节点2:(反序列化二进制数据)

 

MR中key,value都是需要实现WritableComparable接口的对象,这样的对象才是hadoop序列化的对象。

package com.feihao;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

import org.apache.hadoop.io.WritableComparable;

public class StudentWritable implements WritableComparable<StudentWritable> {

    private String name;
    private int age;
    
    
    public void write(DataOutput out) throws IOException {
        out.writeUTF(this.name);
        out.writeInt(this.age);
    }

    public void readFields(DataInput in) throws IOException {
        this.name = in.readUTF();
        this.age = in.readInt();
        
    }

    public int compareTo(StudentWritable o) {
        return 0;
    }

}

 

posted @ 2016-10-10 09:22  feihao_itboy  阅读(459)  评论(0)    收藏  举报