在我看来,org.apache.hadoop.io.serializer.Serialization
可以编写 a 来直接序列化 java 类型,其格式与包装类将类型序列化成的格式相同。这样 Mappers 和 Reducers 就不必处理包装类。
问问题
6468 次
1 回答
5
没有什么可以阻止您更改序列化以使用不同的机制,例如 java Serializable 接口或诸如节俭、协议缓冲区等之类的东西。
事实上,Hadoop 为Java Serializable对象提供了一个(实验性的)序列化实现——只需配置序列化工厂即可使用它。默认的序列化机制是WritableSerialization
,但是可以通过设置以下配置属性来更改:
io.serializations=org.apache.hadoop.io.serializer.JavaSerialization
但是请记住,任何需要可写(输入/输出格式、分区器、比较器)等的东西都需要替换为可以传递Serializable
实例而不是Writable
实例的版本。
为好奇的读者提供更多链接:
- http://www.tom-e-white.com/2008/07/rpc-and-serialization-with-hadoop.html
- Hadoop Writable 和 java.io.serialization 有什么联系和区别?- 这似乎与您所问的问题相似,并且 Tariq 与一个线程有很好的链接,Doug Cutting 在该线程中解释了使用Writables 而不是 Serializables背后的基本原理
于 2013-06-20T10:34:42.213 回答