hadoop序列化对象

hadoop序列化对象和传统java序列化对象不同 ,要实现以下几步 ,具体方式如下

1)必须实现Writable接口

2)反序列化时,需要反射调用空参构造函数,所以必须有空参构造

3)重写序列化方法

4)重写反序列化方法

5)注意反序列化的顺序和序列化的顺序完全一致

6)要想把结果显示在文件中,需要重写toString(),且用”\t”分开,方便后续用

可以导入lombok,创建bean更方便   @Data  里包括了所有属性的get 、set方法以及toString方法;@NoArgsConstructor代表类的空参构造器    依赖如下

      
            org.projectlombok
            lombok
            1.16.18
            provided
        

 具体的bean如下:

package com.demo.phone;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.hadoop.io.Writable;

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

@Data
@NoArgsConstructor
@AllArgsConstructor
public class PhoneWritable implements Writable {

    private Integer upFlow;
    private Integer downFlow;
    private Integer totalFlow;

    public void write(DataOutput dataOutput) throws IOException {
        dataOutput.writeInt(upFlow);
        dataOutput.writeInt(downFlow);
        dataOutput.writeInt(totalFlow);
    }

    public void readFields(DataInput dataInput) throws IOException {
        upFlow = dataInput.readInt();
        downFlow = dataInput.readInt();
        totalFlow = dataInput.readInt();
    }
}

 

你可能感兴趣的:(大数据)