hadoop之Writable序列化

代码如下:

import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.util.StringUtils;

public class WriatableTest {
	//将IntWritable对象序列化和反序列化
	public static byte[] serialize(Writable writable) throws IOException{
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		DataOutputStream dataout = new DataOutputStream(out);
		writable.write(dataout);
		dataout.close();
		return out.toByteArray();
	}
	
	public static byte[] deserialize(Writable writable, byte[] bytes) throws IOException{
		ByteArrayInputStream in = new ByteArrayInputStream(bytes);
		DataInputStream datain = new DataInputStream(in);
		writable.readFields(datain);
		datain.close();
		return bytes;
	}
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		IntWritable intwritable = new IntWritable(163); 
		byte[] bytes = serialize(intwritable);
		System.out.println(bytes);
		System.out.println(StringUtils.byteToHexString(bytes));
		//assertThat(bytes.length, is(4));
		//asserThat(StringUtils.byteToHexString(bytes), is("000000a3"));
		IntWritable writable = new IntWritable();
		byte[] bytest = deserialize(writable,bytes);
		System.out.println(bytest);
		System.out.println(writable.get());
	}
}
输出:

[B@279f2327
000000a3
[B@279f2327
163



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值