hadoop自己的数据类型

ef1yzkbh  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(380)

我已经使用hadoop很长一段时间了,但是我不知道为什么hadoop使用它自己的数据类型而不是java数据类型?我一直在网上搜索同样的东西,但没有任何帮助。请帮忙。

4ktjp1zp

4ktjp1zp1#

简而言之,这是因为它们提供了序列化和反序列化性能。
长版本:
使用可写(hadoop的数据类型)的主要好处在于它们的效率。与java序列化相比,java序列化是一种明显的替代选择,它们具有更紧凑的表示形式。可写文件不会将其类型存储在序列化表示中,因为在反序列化时,可以知道需要哪种类型。
以下是hadoop权威指南的更详细摘录:
java序列化不是紧凑的,类实现 java.io.Serializable 或者 java.io.Externalizable 将它们的类名和对象表示形式写入流。同一类的后续示例将引用句柄写入第一个引用,该引用仅占用5个字节。但是,引用句柄不能很好地处理随机访问,因为referent类可能出现在前面流中的任何一点上,也就是说,流中存储有状态。更糟糕的是,引用句柄会对序列化流中的记录进行排序,因为特定类的第一个记录是可区分的,必须将其视为特例。所有这些问题都可以通过根本不将类名写入流来避免,这是可写的方法。结果是,该格式比java序列化要紧凑得多,而且随机访问和排序工作与预期一样,因为每个记录都独立于其他记录(因此没有流状态)。

相关问题