有没有办法获得Intwritable
的范围?
Int.MAX_VALUE
是否有等同于IntWritable
的内容?
答案 0 :(得分:0)
Integer
是原始int
数据类型的包装器,使其有资格在java map
中用作键/值。但是IntWritable
并不真正代表原始数据类型的包装器。相反,它是整数的变体,具有优化的序列化实现(java默认序列化过于庞大)。通过这样说,Intwritable
并不意味着取代Integer
所用的内容。即使在映射器中,也使用Integer
编写通用逻辑;只有当您在mapredcue
个阶段内发出一个值时,IntWritable
类型才能进行优化。
因此,它很高兴允许您初始化IntWritable
,其中包含从任何地方获取的最大值,或者从核心Java库本身:
IntWritable writable = new IntWritable(Integer.MAX_VALUE)
重要的是,它与初始化Integer
不同,后者返回一个不可变的Integer
对象。 IntWritable
确实有set(int value)
方法且可变。这对于支持精益序列化/反序列化非常重要。