serialization - Hadoop MapReduce 中为 Java 类型提供可写包装类的原因是什么?

标签 serialization hadoop mapreduce writable

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

最佳答案

没有什么可以阻止您更改序列化以使用不同的机制,例如 java Serialized 接口(interface)或 thrift、protocol buffers 等。

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

io.serializations=org.apache.hadoop.io.serializer.JavaSerialization

但是请记住,任何需要可写的内容(输入/输出格式、分区器、比较器)等都需要替换为可以传递 Serialized 实例而不是 实例的版本>可写实例。

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

关于serialization - Hadoop MapReduce 中为 Java 类型提供可写包装类的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203661/

相关文章:

c# - .Net 2 中的反序列化列表 <> 应该在 .Net 4 中工作吗?

java - 如何实现 xml 可保存/可加载类?

java - 如何确定我处于序列化 Java 对象的最后一个字节?

hadoop - 如何在Pig脚本中注册类路径文件?

java - Hadoop 中的 CSV 处理

java - 线程 "main"org.apache.Hadoop.mapred.InvalidJobConfException : Output directory not set in JobConf 中的异常

javascript - JSON.parse 没有在 javascript 中创建 json 对象

hadoop - Hive:从大表创建小表

hadoop - 我无法访问Hive-线程 “main” java.lang.NoSuchMethodError中的异常:org.apache.hadoop.security.UserGroupInformation.login

java - 无法找到或加载主类 com.sun.tools.javac.Main hadoop mapreduce