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);
    }
}
相关推荐
江瀚视野2 分钟前
虎扑正式易主,迅雷完成收购会带来什么变化?
大数据·区块链
QYR_111 小时前
宠物车载安全座椅市场报告:解读行业趋势与投资前景
大数据·人工智能
Leo.yuan1 小时前
实时数据仓库是什么?数据仓库设计怎么做?
大数据·数据库·数据仓库·数据分析·spark
predisw1 小时前
Kafka broker 写消息的过程
分布式·kafka
@BreCaspian2 小时前
Git 推送失败解决教程——error: failed to push some refs to
大数据·git·elasticsearch
找不到、了3 小时前
深入学习RabbitMQ队列的知识
分布式·rabbitmq
showmethetime3 小时前
RabbitMQ实用技巧
分布式·rabbitmq·ruby
郭泽元4 小时前
递归树形菜单:优雅处理层级数据的利器
大数据
viperrrrrrrrrr74 小时前
大数据学习(130)-zookeeper
大数据·学习·zookeeper
KwokGuardian4 小时前
Seata 分布式事务 AT 模式
分布式