Hadoop的序列化和反序列化

复制代码
//1
package com.example.sei;


import org.apache.hadoop.io.Writable;

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

//学生类,姓名,年龄
//支持hadoop的序列化
//1.要实现Writable接口
//2.补充一个空参构造
public class StudentH implements Writable {
     String name;
     int age;
     //空参构造
    public StudentH() {}
    public StudentH(String name, int age) {
        this.name = name;
        this.age = age;

    }
    //write:在序列化的时候,调用,把对象写到文件
    @Override
    public void write(DataOutput dataOutput) throws IOException {
        //dataOutput.writeUTF(字段);
        dataOutput.writeUTF(name);
        dataOutput.writeInt(age);
    }
    //readFields:反序列化的时候,调用,从文件中读出内容,还原这个对象
    //字段顺序要与write中的顺序一致
    @Override
    public void readFields(DataInput dataInput) throws IOException {
        //字段=dataInput.read();
        name=dataInput.readUTF();
        age=dataInput.readInt();
    }
}

//2

复制代码
package com.example.sei;

import java.io.*;

public class TestStudentH {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //实例化student对象
//        StudentH student = new StudentH("张三", 18);
//        System.out.println(student.name+ " " + student.age);
//
//
//
//        //hadoop序列化:把对象保存到第一个文件中
//        DataOutputStream dos = new DataOutputStream(new FileOutputStream("student_hadoop.ser"));
//        student.write(dos);

        //hadoop反序列化:从第一个文件中读取对象
        DataInputStream dis = new DataInputStream(new FileInputStream("student_hadoop.ser"));
        StudentH student1 = new StudentH();
        student1.readFields(dis);
        System.out.println(student1.name+ " " + student1.age);
    }
}
相关推荐
小C80617 小时前
【Starrocks + Hive 】BitMap + 物化视图 实战记录
大数据
lang2015092818 小时前
Kafka元数据缓存机制深度解析
分布式·缓存·kafka
西格电力科技19 小时前
面向工业用户的绿电直连架构适配技术:高可靠与高弹性的双重设计
大数据·服务器·人工智能·架构·能源
qq_3432470320 小时前
单机版认证kafka
数据库·分布式·kafka
武子康20 小时前
Java-199 JMS Queue/Topic 集群下如何避免重复消费:ActiveMQ 虚拟主题与交付语义梳理
java·分布式·消息队列·rabbitmq·activemq·mq·java-activemq
beijingliushao20 小时前
105-Spark之Standalone HA环境搭建过程
大数据·spark
源代码•宸20 小时前
分布式缓存-GO(简历写法、常见面试题)
服务器·开发语言·经验分享·分布式·后端·缓存·golang
五阿哥永琪20 小时前
Git 开发常用命令速查手册
大数据·git·elasticsearch
A尘埃21 小时前
Java业务场景(高并发+高可用+分布式)
java·开发语言·分布式