1

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

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

干杯,于尔根

4

1 回答 1

4

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

 conf2.setOutputKeyClass(Tuple.class);

如果可以的话,为了更好地做到这一点,你可以继承 Tuple 以在运行时保持一个类型:

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

然后将其用作 setOutputKeyClass 的参数。

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

于 2009-07-20T22:10:58.153 回答