我是一名 .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/