Hadoop - 未加载IntWritable(int)构造函数

时间:2016-04-13 10:07:32

标签: java hadoop

我试图在Hadoop中创建MapReduce,并希望将String转换为IntWritable。我按照此处列出的建议:ERROR_MESSAGE()。 它建议使用

public class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable > {
private final Text wordKey = new Text("");

public void map(LongWritable ikey, Text value, Context context) throws IOException, InterruptedException {
    String[] friend = value.toString().split(";");
    String[] friendswith = friend[1].split(",");
    for (String s : friendswith) {
        wordKey.set(friend[0]);
        context.write(wordKey, IntWritable(Integer.parseInt(s))); //trying to convert here
      }
   }
}

所以我正在尝试的是

The method IntWritable(int) is undefined for the type MyMapper

但得到错误

int

根据文档How to convert String object to IntWritable Object in Hadoop,它指出,有一个构造函数接受IntWritable作为输入。我确实导入了import org.apache.hadoop.io.IntWritable;

IntWritable(int)

什么可能导致我无法使用{{1}}构造函数?

1 个答案:

答案 0 :(得分:1)

Yout缺少new关键字。

在第

context.write(wordKey, IntWritable(Integer.parseInt(s)));

您没有创建IntWritable的实例,而是尝试调用未定义的名为IntWritable的方法。

试试这个:

context.write(wordKey, new IntWritable(Integer.parseInt(s)));