大数据技术之hadoop——(八)hadoop序列化


一、序列化概述

1.1、什么是序列化?

序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。
反序列化就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换成内存中的对象。

1.2、为什么要序列化?

一般来说,“活的”对象只生存在内存里,关机断电就没有了。而且“活的”对象只能由本地的进程使用,不能被发送到网络上的另外一台计算机。 然而序列化可以存储“活的”对象,可以将“活的”对象发送到远程计算机。

1.3、为什么不用java的序列化?

Java 的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,Header,继承体系等),不便于在网络中高效传输。所以,Hadoop 自己开发了一套序列化机制(Writable)

这里参照大佬文章演示 参考文章

对比java序列化和hadoop序列化

【1】java序列化

package com.zhou.MapReduce.Serialization.java;
import java.io.Serializable;

/**
 * @author zhouhao
 * @date 2021/8/15 - 22:19
 */
public class Student implements Serializable {
   
    private String name;
    private int age;

    public Student(String name, int age) {
   
        this.name = name;
        this.age = age;
    }
    public String getName() {
   
        return name;
    }
    public void setName(String name) {
   
        this.name = name;
    }
    public int getAge() {
   
        return age;
    }
    public void setAge(int age) {
   
        this.age = age;
    }
}

package com.zhou.MapReduce.Serialization.java;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/**
 * @author zhouhao
 * @date 2021/8/15 - 22:21
 */
public class Application {
   

    public static void main(String[] args) {
   
        try {
   
            ByteArrayOutputStream baos = new ByteArrayOutputStream();

            ObjectOutputStream oos = new ObjectOutputStream(baos);
            oos.writeObject(new Student("zhangsan", 20));
            System.out.println("字节大小:" + baos.size());
            oos.close();
            baos.close();

        } catch (IOException e) {
   
            e.printStackTrace();
        }
    }
}

执行结果:
在这里插入图片描述

【2】hadoop序列化

package com.zhou.MapReduce.Serialization.hadoop;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.WritableComparable;
import java
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值