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);
    }
}
相关推荐
geneculture16 分钟前
邹晓辉教授基于融智学的意识5W2H数学系统刻画
大数据·人工智能·机器学习·融智学的重要应用·融智学
yuhuhuh18 分钟前
spark基本介绍
大数据·分布式·spark
逸Y 仙X20 分钟前
适合java程序员的Kafka消息中间件实战
分布式·中间件·kafka·消息中间件
LUCIAZZZ8 小时前
简单介绍分布式定时任务XXL-JOB
java·spring boot·分布式·spring·操作系统·定时任务
咸鱼求放生8 小时前
验证es启动成功
大数据·elasticsearch·jenkins
小白学大数据8 小时前
分布式爬虫去重:Python + Redis实现高效URL去重
开发语言·分布式·爬虫·python
Leo.yuan10 小时前
直播数据大屏是什么?企业应如何构建直播数据大屏?
大数据·数据库·python·信息可视化·数据分析
嘟嘟嘟嘟嘟嘟嘟.11 小时前
shell操作文件上传
hadoop
Zyxalia11 小时前
gin + es 实践 05
大数据·elasticsearch·gin
古拉拉明亮之神11 小时前
Spark和Hadoop之间的联系
大数据·hadoop·spark