java.lang.NumberFormatException: For input string: "MapReduce is powerful is simple"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at InvertedIndexCombiner.reduce(InvertedIndexCombiner.java:13)
at InvertedIndexCombiner.reduce(InvertedIndexCombiner.java:5)
at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:171)
at org.apache.hadoop.mapred.Task$NewCombinerRunner.combine(Task.java:1688)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.sortAndSpill(MapTask.java:1637)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:1489)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.close(MapTask.java:723)
at org.apache.hadoop.mapred.MapTask.closeQuietly(MapTask.java:2019)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:797)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import java.io.IOException;
//对相同key的value值放在一个集合,进行求和
public class InvertedIndexCombiner extends Reducer<Text,Text,Text,Text> {
public static Text info=new Text();
@Override
protected void reduce(Text key,Iterable<Text>values,Context context)
throws IOException,InterruptedException {
int sum=0;//统计词频
//遍历集合,统计词频
for(Text value:values){
sum+=Integer.parseInt(value.toString());
}
//获得key
int splitIndex = key.toString().indexOf(":");
//有了key和value,然后将其写入上下文中
//重新设置value值,并且得到文档名称和词频统计
info.set(key.toString().substring(splitIndex+1)+":"+sum);
//更新key值为单词
key.set(key.toString().substring(0,splitIndex));
context.write(key,info);
}
}
可以运行,但输出什么都没有,只有一个空文件夹
你占出来的代码的第13行有问题,根据你的报错显示应该就是呢里的问题,你打个断点看下是不是类型没对上,造成NumberFormatException
意思就是你的第13行的value不是纯数字