Writable接口 与 WritableComparable接口

来源:互联网 发布:支付宝系统数据库设计 编辑:程序博客网 时间:2024/05/20 23:32

Hadoop中,Writable接口定义了两个方法:

void write(DataOutputout) throws IOException;用户将其状态写入二进制格式的DataOutput流。

void readFields(DataInputin) throws IOException;用于从二进制格式的DataInput流读取其状态

 

Writable的序列化和反序列化检查:

package com.yc.hadoop.mapreduce;

 

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

 

import org.apache.hadoop.io.Writable;

 

public class WritableSequenceDemo {

//序列化数据  :结构化数据 转换成 字节数据流

public static byte[] serialize(Writable w) throws IOException{

ByteArrayOutputStream out = new ByteArrayOutputStream();

DataOutputStream dout = new DataOutputStream(out);

w.write(dout);

dout.close();

return out.toByteArray();

}

//反序列化数据 : 字节数据流 转换成 结构化数据

public static String deserialize(Writable w, byte[] bs) throws IOException{

ByteArrayInputStream in = new ByteArrayInputStream(bs);

DataInputStream din = new DataInputStream(in);

w.readFields(din);

din.close();

return w.toString();

}

}

 

public interface WritableComparable<T>extends Writable, Comparable<T>类型的比较对MapReduce至关重要, 键与键之间的比较在排序阶段完成