zoukankan      html  css  js  c++  java
  • hadoop的序列化机制

    序列化(Serialization)是指把结构化对象转化为字节流

    • 反序列化(Deserialization)是序列化的逆过程。即把字节流转回结构化对象。
    • hadoop将Java中的序列化接口(java.io.Serializable)进行了改造,已达到高效传输的目的

    序列化格式特点


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

    这里写图片描述
    序列化在分布式环境的两大作用:

    • 进程间通信,永久存储。
    • Hadoop节点间通信。

    自定义Writable类型

      有时候,使用hadoop自带的一些writable序列化类(如LongWritable、Text)无法满足要求,需要自定义一些序列化类型。
      首先,定义一个类例如DataBean实现Writable接口,并实现其接口的 write() 和 readFilelds() 方法
      注意:一定不能把顺序和数据类型写错了,不然无法保证正常序列化!

    public class DataBean implements Writable{ 
    
        private String telNo;
        private long uoPayLoad;
        private long downPayLoad;
        private long totalPayLoad;
        //序列化
        public void write(DaraOutput out) throws IOException {
            out.writeUTF(telNo);
            out.writeLong(upPayLoad);
            out.writeLong(downPayLoad);
            out.writeLong(totalPayLoad);
        }
        //反序列化
        public void readFileds(DataInput in) throws IOException{
            this.telNo = in.readUTF();
            this.upPayLoad = in.readLong();
            this.downPayLoad= in.readLong();
            this.totalPayLoad= in.readLong();
        }
        getter and setters...
    }
  • 相关阅读:
    E-R图转换成关系模型
    折叠表格
    ICE在Linux下的安装
    yum 安装gcc
    dll和so文件区别与构成
    linux进入图形界面的方法
    ACE vs Boost: Singleton的实现
    ACE与ASIO之间关于Socket编程的比较
    Linux 下编译安装ACE时遇到的问题及解决
    Linux下安装、配置ACE
  • 原文地址:https://www.cnblogs.com/shiguangmanbu2016/p/5932888.html
Copyright © 2011-2022 走看看