Hadoop 的序列化机制,真的是大数据开发里绕不开的一环。用Writable接口把对象转成字节流,传输、存储两不误。嗯,效率也挺高,适合节点多、数据量大的场景。

write(DataOutput out)、读readFields(DataInput in),两个方法搞定序列化和反序列化,逻辑还挺清晰的。像IntWritableText这些内置类型,省心好用。想自定义?写个UserWritable,字段随你定义,还能实现排序,挺灵活。

说到细节,像整数序列化,Hadoop 还有个比较省空间的玩法,叫VIntWritable,小数据用小字节,挺贴心的。嗯,节省带宽也挺重要的对吧?

不过注意哦,Writable扩展性一般,而且非 Java 语言支持不算好。如果你有跨语言需求,最好考虑下别的序列化方案。Hadoop 自家用得多,Java 环境里跑得还挺顺。

如果你正用HadoopMapReduce或者 RPC,搞清楚Writable这一套,真的挺有必要的。想深入点,还可以看看Hadoop RPC 与 NIO这篇,顺便了解下 RPC 底层是怎么玩的。