hadoop序列化

本文探讨了在使用Writeable接口进行对象参数序列化传输时遇到的问题,包括序列化过程的必要性、write函数与readFields的正确使用顺序,以及可能导致java.io.EOFException的常见错误。通过实例分析,提供了解决此类问题的方法。


问题描述: 对某个实现了Writeable 序列化接口的类增加一些传输的参数,,结果发现JT端始终无法获得TT端设置的值,且值始终是构造函数中初始化的值,查到最后,发现是序列化问题。


每个实现了Writeable 接口的类,都要实现write函数和readFields,一个是将该对象中的参数序列化入发送参数构造的Call对象,一个是从Call对象中将参数读取。

新增参数没有在这两个函数中加入序列化的过程的话,就会发现读取的值始终不对,因为缺少以上两个函数,所以无法正确的序列化写入和在JT端读取并构造新的对象。

此外,还需注意,write函数和readFields对象属性时,顺序要一致,比如write时先写一个int,再写一个double ,读的时候应按照同样顺序读进来,先读int,再读double ,否则会报

java.io.EOFException
at java.io.DataInputStream.<wbr>readFully(DataInputStream.<wbr>java:197)</wbr></wbr>

之类的错误。

Blaaaaaaa............

以前遇到过这个问题,当时解决了,今天又忘了,白白折腾了一个小时!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值