3.Hadoop序列化

3.Hadoop序列化

3.1概述

序列化和反序列化

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

序列化特点

  • 紧凑:高效使用存储空间
  • 快速:读写数据的额外开支较小
  • 可拓展:随着通信协议的升级升级
  • 互操作:支持多语言的交互

3.2自定义bean对象实现序列化接口

  • 必须实现Writeable接口
  • 反序列化时,需要反射调用空参构造函数,必须要有空参构造
public Bean(){
   
}
@Override
public void write(DataOutput out) throws IOException {
	out.writeLong(upFlow);
	out.writeLong(downFlow);
	out.writeLong(sumFlow);
}
@Override
public void readFields(DataInput in) throws IOException {
	upFlow = in.readLong();
	downFlow = in.readLong();
	sumFlow = in.readLong();
}
  • 序列化和反序列化的顺序完全一致
  • 如果要把文件显示文件中,需要重写toString(),可以用"\t"分隔
  • 如果需要将自定义的bean放在key中传输,则还需要实现Comparable接口,因为MapReduce中的Shuffle过程要求对key必须能排序
@Override
public int compareto(FlowBean o) {
	// 倒序排列,从大到小
	return this.sumFlow > o.getSumFlow() ? -1 : 1;
}

相关文章

hadoop搭建准备工作三台虚拟机:master、node1、node2检查时...
文件的更名和移动:    获取文件详细信息       遇...
目录一、背景1)小文件是如何产生的?2)文件块大小设置3)H...
目录一、概述二、HadoopDataNode多目录磁盘配置1)配置hdfs-...
平台搭建(伪分布式)伪分布式搭建在VM中搭建std-master修改...
 一、HDFS概述 1.1、HDFS产出背景及定义 1.1.1、HDFS产生...