在Hadoop MapReduce for Java类型中使用Writable包装类的原因是什么?

use*_*020 2 serialization hadoop mapreduce writable

在我看来,org.apache.hadoop.io.serializer.Serialization可以编写一个可以直接以与包装类序列化类型相同的格式串行化java类型.这样Mappers和Reducers就不必处理包装类了.

Chr*_*ite 5

没有什么能阻止你改变序列化以使用不同的机制,例如java Serializable接口或类似thrift,协议缓冲区等.

事实上,Hadoop为Java Serializable对象提供了一个(实验性)序列化实现- 只需配置序列化工厂即可使用它.默认的序列化机制是WritableSerialization,但可以通过设置以下配置属性来更改:

io.serializations=org.apache.hadoop.io.serializer.JavaSerialization
Run Code Online (Sandbox Code Playgroud)

但请记住,任何需要Writable(输入/输出格式,分区器,比较器)等的东西都需要被可以传递Serializable实例而不是Writable实例的版本替换.

为好奇的读者提供了更多链接: