2009-07-20 46 views
1

我是一个.NET程序员,他在Java中做了一些Hadoop工作,我有点迷失在这里。在Hadoop中,我试图设置一个Map-Reduce作业,其中Map作业的输出键的类型为Tuple<IntWritable,Text>。当我设置使用setOutputKeyclass输出键如下Java泛型和Hadoop:如何获得类变量

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

我收到了一大堆错误的,因为仿制药与“.class”的符号似乎不飞。以下工作正常

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

任何人都有关于如何设置输出键类的指针?

干杯,尤尔根

回答

4

在Java中,泛型是在编译时删除,因此,你能做的最好的是:

conf2.setOutputKeyClass(Tuple.class); 

如果可以的话,让这个更好的,你也可以继承元组在运行时保持一种类型:

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

然后使用它作为setOutputKeyClass的参数。

请注意,我对Hadoop一无所知,所以这可能没有任何意义,但通常在使用Java泛型时,这就是你所做的。

+0

是的,这也是我能想到的最好的。 – 2009-07-20 22:19:37