midea2 发表于 2018-10-29 10:04:45

Hadoop学习--person类对象的序列化和反序列化--day07

  person类的代码:
  import java.io.DataInput;
  import java.io.DataOutput;
  import java.io.IOException;
  import org.apache.hadoop.io.BooleanWritable;
  import org.apache.hadoop.io.IntWritable;
  import org.apache.hadoop.io.Text;
  import org.apache.hadoop.io.Writable;

  public>  //相当于String类型
  private Text name;
  public Text getName() {
  return name;
  }
  public void setName(Text name) {
  this.name = name;
  }
  public IntWritable getAge() {
  return age;
  }
  public void setAge(IntWritable age) {
  this.age = age;
  }
  public BooleanWritable getMale() {
  return male;
  }
  public void setMale(BooleanWritable male) {
  this.male = male;
  }
  private IntWritable age;
  private BooleanWritable male;
  //序列化
  public void write(DataOutput out) throws IOException{
  name.write(out);
  age.write(out);
  male.write(out);
  }
  //反序列化
  public void readFields(DataInput in) throws IOException{
  name = new Text();
  age=new IntWritable();
  male=new BooleanWritable();
  name.readFields(in);
  age.readFields(in);
  male.readFields(in);
  }
  }
  测试类的代码:
  import java.io.ByteArrayInputStream;
  import java.io.ByteArrayOutputStream;
  import java.io.DataInputStream;
  import java.io.DataOutputStream;
  import org.apache.hadoop.io.BooleanWritable;
  import org.apache.hadoop.io.IntWritable;
  import org.apache.hadoop.io.Text;
  import org.junit.Test;

  public>  @Test
  public void testSeria() throws Exception{
  //new person
  Person p = new Person();
  p.setName(new Text("tomas"));
  p.setAge(new IntWritable(12));
  p.setMale(new BooleanWritable(false));
  //序列化
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  DataOutputStream dataOut = new DataOutputStream(baos);
  p.write(dataOut);
  dataOut.close();
  //反序列化
  Person newPerson = new Person();
  newPerson.readFields(new DataInputStream(new ByteArrayInputStream(baos.toByteArray())));
  System.out.println(newPerson.getName());
  System.out.println(newPerson.getAge().get());
  }
  }

页: [1]
查看完整版本: Hadoop学习--person类对象的序列化和反序列化--day07