为什么Hadoop需要像Text或IntWritable这样的类而不是String或Integer?

Cas*_*ash 32 hadoop

为什么Hadoop需要引入这些新类?它们似乎使界面复杂化

Win*_*ton 41

为了以Hadoop方式处理对象.例如,hadoop使用Text而不是java String.在TextHadoop中类是类似于Java String,但是,Text实现接口等Comparable,WritableWritableComparable.

这些接口都是MapReduce所必需的; 该Comparable接口用于比较reducer对键进行排序,并将Writable结果写入本地磁盘.它不使用java,Serializable因为java Serializable对于hadoop来说太大或太重,Writable可以以非常轻的方式序列化hadoop对象.


Vid*_*dya 30

因为在大数据世界中,需要将结构化对象序列化为字节流,以便通过网络移动或持久保存到群集上的磁盘......然后根据需要再次反序列化.当您拥有像Facebook规模那样存储和移动的大量数据时,您的数据需要高效,并且尽可能少地存储和移动时间.

String而且Integer太"肥胖"了.Text并且IntWritable,分别在表示相同类型信息的字节数组之上提供更容易的抽象.