我在学习Hadoop MapReduce框架。我努力发现为什么我们不能在Map Reduce中使用Java原始数据类型。为什么我们不能在Map Reduce中使用Java原始数据类型?
回答
Java序列化需要在序列化格式中的对象的每个实例之前加上前缀类的哈希值。因此,要读取对象,您不需要指定类名称。这会导致读取对象的开销,因为每个对象都可能是不同类的实例。
在Hadoop序列化中,我们在检索它时指定了类名。因此,由于我们已经知道我们正在检索什么,因此不需要前缀。因此我们设置了InputFormat。这在RPC的各个方面提高了速度和性能。
感谢您的回应,这真的很有帮助。 – rraghuva
在Hadoop中,进程间通信是使用远程过程调用(RPC)构建的。 RPC协议使用序列化在发送者处将消息呈现为二进制流,并且将在接收器处将其从二进制流反序列化为原始消息。
对于Hadoop的有效性,序列化/反序列化过程应该进行优化,因为群集中的节点之间会发生大量的远程调用。所以序列化格式应该是fast, compact, extensible and interoperable
。由于这个原因,Hadoop框架提供了一个IO类来替换Java原始数据类型。例如IntWritbale for int, LongWritable for long, Text for String etc.
有关更多详细信息,请参阅Hadoop权威指南第4版。
从Apache的website,可写的目的是引述:
Serializable对象实现简单,高效,序列化协议的基础上的DataInput和DataOutput中。
感谢您的回应,这真的很有帮助。 – rraghuva
- 1. 为什么不能在泛型类中使用原始类型,静态变量?
- 2. 为什么Java中有原始数据类型?
- 3. 为什么原始数据类型在java.util.ArrayList中不允许?
- 4. 为什么在C#中我们需要初始化原始类型变量?
- 5. Java:为什么“long”原始类型不接受简单数字?
- 6. 为什么我不能在map()中使用字符串函数?
- 7. 为什么我们不能在非泛型类中使用泛型方法?
- 8. 为什么我在使用mincemeat时在map-reduce中不断收到此错误?
- 9. 为什么我们不能在Java中使用指针?
- 10. 为什么我不能使用null初始化可变类型?
- 11. Java - 引用原始数据类型?
- 12. 为什么我不能使用别名?使用原始LARAVEL
- 13. 为什么我们在ASP.NET MVC中使用泛型类型?
- 14. Java:原始类型对象内的泛型类型或为什么我的参数化不起作用
- 15. 为什么我们在Firebird中没有布尔数据类型?
- 16. 为什么原始类型不能被铸造?
- 17. 为什么我不能在函数中设置JavaScript原型?
- 18. 如果我使用原始类型作为参数调用泛型方法,将使用什么类型参数?
- 19. 为什么不能我们使用原单for循环设置
- 20. 为什么我们不能在.net
- 21. 为什么原始类型的数组不被视为对象
- 22. 为什么我们不能在jQuery中使用setAtrribute函数?
- 23. 为什么我们需要指针的不同数据类型?
- 24. javascript中的原始数据类型和引用数据类型
- 25. 为什么我们不能从父类
- 26. 为什么我不能在Javascript中调用原型方法?
- 27. 为什么我们使用signed和unsigned char数据类型?目的是什么?
- 28. Java,为什么我们不能使用null作为包名?
- 29. 为什么我们不能使用double作为泛型T?
- 30. 原始数据类型在java中可用吗?
很可能是因为数据传递的方式。在很多地方你需要对象(并且需要对基元进行特殊处理)。但是:这很重要吗? – Thilo