在我看来,可以编写org.apache.hadoop.io.serializer.Serialization
来直接以与包装类序列化类型相同的格式序列化java类型。这样Mappers和Reducers就不必处理包装类了。
答案 0 :(得分:5)
没有什么能阻止你改变序列化以使用不同的机制,例如java Serializable接口或类似thrift,协议缓冲区等。
事实上,Hadoop为Java Serializable对象提供了(实验性)序列化实现 - 只需配置序列化工厂即可使用它。默认的序列化机制是WritableSerialization
,但可以通过设置以下配置属性来更改:
io.serializations=org.apache.hadoop.io.serializer.JavaSerialization
请记住,任何需要Writable(输入/输出格式,分区器,比较器)等的内容都需要替换为可以传递Serializable
实例而非Writable
实例的版本。实例
为好奇的读者提供更多链接: