Closed. This question is not reproducible or was caused by typos。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
4年前关闭。
Improve this question
我正在尝试在Hadoop中制作MapReduce,并希望将String转换为IntWritable。我正在遵循此处列出的建议:How to convert String object to IntWritable Object in Hadoop。
建议使用
所以我正在尝试的是
但是得到错误
根据文档here的说明,有一个构造器接受
是什么原因导致我无法使用
您不是在创建
试试这个:
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
4年前关闭。
Improve this question
我正在尝试在Hadoop中制作MapReduce,并希望将String转换为IntWritable。我正在遵循此处列出的建议:How to convert String object to IntWritable Object in Hadoop。
建议使用
new IntWriteable(Integer.parseInt(someString))
所以我正在尝试的是
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
根据文档here的说明,有一个构造器接受
int
作为输入。我确实导入了IntWritable
:import org.apache.hadoop.io.IntWritable;
是什么原因导致我无法使用
IntWritable(int)
构造函数? 最佳答案
您缺少new
关键字。
在行中
context.write(wordKey, IntWritable(Integer.parseInt(s)));
您不是在创建
IntWritable
的实例,而是尝试调用未定义的名为IntWritable
的方法。试试这个:
context.write(wordKey, new IntWritable(Integer.parseInt(s)));
10-08 19:30