java - Integer 和 IntWritable 类型的存在

标签 java hadoop

我的问题可能很愚蠢,但请耐心等待。

在 Java 中,int 是一种数据类型,Integer 是一种包装 int 的类型。如果我们谈论 Hadoop,可以使用 IntWritable 而不是 Integer。 (如果我没记错的话)

在学习大部分时间时都说,在hadoop中他们使用IntWritable,因为它有利于通过网络传输大量数据。没关系..!

我在执行此操作时遇到的一件事,无论是 Integer 还是 IntWritable,它们对 int 的包装有何不同?我在哪里可以看到可以显示 int 周围的包装差异的代码?如果我看到 IntWritable 类或 Integer 类,它们似乎是一个简单的类,但是当 int 被 Integer 或 IntWritable 抛弃时,差异发生在哪里?

我现在正在考虑将 int 作为 Java 的核心类型,并寻找当 int 位于后端的 Integer 或 IntWritable 内部时会发生什么?它如何变成 Integer 或 IntWritable ?我希望我的问题得到解答..! :)

最佳答案

是的,有区别。

IntWritableInteger 的 Hadoop 变体它已针对 Hadoop 环境中的序列化进行了优化。安integer将使用默认的 Java 序列化,这在 Hadoop 环境中成本非常高。

IntWritable 实现 Comparable<IntWritable>, Writable, WritableComparable<IntWritable>接口(interface)。

  • Comparable 是一个接口(interface),其抽象方法使我们能够灵活地比较两个对象。
  • Writable 用于将数据写入本地磁盘,它是一种序列化格式。人们可以在 Hadoop 中实现自己的 Writables。 Java 的序列化在系统上过于庞大且缓慢。这就是为什么 Hadoop 社区已经将 Writable 部署到位。
  • WritableComparable 是以上两个接口(interface)的组合。

更多引用:

Why does Hadoop need classes like Text or IntWritable instead of String or Integer?

对于Integer的内部结构类:

https://www.geeksforgeeks.org/java-lang-integer-class-java/

Hadoop 文档 IntWriable :

http://hadoop.apache.org/docs/r2.7.1/api/org/apache/hadoop/io/IntWritable.html

关于java - Integer 和 IntWritable 类型的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52361265/

相关文章:

java - BlackBerry JDE 支持的设备吗?

java - 在Java程序中调用JavaFX等待wait退出后再运行更多代码

hadoop - 如何在hadoop2(yarn)中使用JobClient

python - 是否有等同于HIV的PIG.COMPILE?

hadoop - 如何调整 Hadoop 集群以同时执行多个任务?

java - 垃圾收集器不会立即收集完成的线程

java - 密码的正则表达式

java - 在 Gradle 中声明对 war 文件的依赖

hadoop - apache pig中一列的最大值

hadoop - 如何记录我编写的 Pig Latin grunt shell 命令?