hadoop自定义序列化
在实现复杂数据进行处理的时候,hadoop自带的序列化参数不够,此时需要自己来定义序列化类信息
Hadoop序列化对比Java
hadoop序列化相比Java序列化占用空间更小更加紧凑
对象可以重用 通过 writer 和 readFields 方法
可扩展信,实现多语言平台通用
序列化注意条件
- 序列化对象类需要实现 Writable 接口
- 实现的 writer 和 readFields 方法,并且在方法中读写顺序必须保持相同
- 重写toString方法,方便查看输出对象信息
自定义序列化类
package com.xdc.mapreduce;
import lombok.Data;
import org.apache.hadoop.io.Writable;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
/**
* @author xdc
* created by 2019/11/5
*/
@Data
public class FlowBean implements Writable {
private String number;
private long upFlow;
private long downFlow;
private long sumFlow;
public void write(DataOutput dataOutput) throws IOException {
dataOutput.writeUTF(number);
dataOutput.writeLong(upFlow);
dataOutput.writeLong(downFlow);
dataOutput.writeLong(sumFlow);
}
public void readFields(DataInput dataInput) throws IOException {
number = dataInput.readUTF();
upFlow = dataInput.readLong();
downFlow = dataInput.readLong();
sumFlow = dataInput.readLong();
}
public FlowBean() {
super();
}