2009-07-20 20 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