Java 泛型和 Hadoop : how to get a class variable

标签 java generics hadoop

我是一名 .NET 程序员,在 Java 中从事一些 Hadoop 工作,我有点不知所措。在 Hadoop 中,我正在尝试设置一个 Map-Reduce 作业,其中 Map 作业的输出键的类型为 Tuple<IntWritable,Text> .当我使用 setOutputKeyclass 如下设置输出键时

JobConf conf2 = new JobConf(OutputCounter.class);
conf2.setOutputKeyClass(Tuple<IntWritable,Text>.class);

我遇到了一大堆错误,因为泛型和“.class”符号似乎不适用。尽管以下工作正常

JobConf conf2 = new JobConf(OutputCounter.class);
conf2.setOutputKeyClass(IntWritable.class);

有人对如何设置输出键类有任何指示吗?

干杯,于尔根

最佳答案

在 java 中,泛型在编译时被清除,所以你能做的最好的是:

 conf2.setOutputKeyClass(Tuple.class);

如果可以,为了做得更好,您可以子类化 Tuple 以在运行时保留一个类型:

 public class IntWritableTextTuple extends Tuple<IntWritable, Text> {}

然后将其用作 setOutputKeyClass 的参数。

请注意,我对 Hadoop 一无所知,所以这可能没有任何意义,但一般来说,对于 java 泛型,这就是你要做的。

关于Java 泛型和 Hadoop : how to get a class variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1156223/

相关文章:

hadoop - 下载 Hadoopizer 时出现问题

java - 使用单例类和使用静态方法的类有什么区别?

generics - 如何从函数返回过滤器迭代器?

design-patterns - 如果在对象类型上,寻找一种设计模式来替换 huuuge

Java泛型捕获错误 "? super capture#1 of ? super T"

hadoop - 我想知道(公式)如何计算 namenode、yarn 和 Resource Manager 的 RAM、CPU 和磁盘内存

hadoop - OOZIE 状态检查抛出 java.lang.NullPointerException

java - 在 Android Activity 中的 java.util.Timer 中使用计数器会导致应用程序崩溃

java - Spring Boot Starter Cache - 缺少速度?

java - 有没有办法在不破坏反序列化过程的情况下忽略 JsonProcessingException