求大神看一下哪里搞错了

 

 

 

package MapReduce;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Reducer;

import javax.xml.soap.Text;
import java.io.IOException;

public class WordCountReducer extends Reducer <Text, IntWritable,
        Text, IntWritable>{
    @Override
    protected void reduce (Text key, Iterable<IntWritable>value,
                           Reducer<Text, IntWritable, Text, IntWritable>.Context
                                   context) throws IOException, InterruptedException {
        int count = 0;
        for (IntWritable iw : value) {
            count +=iw.get();
        }
        context.write(key, new IntWritable(count));
    }
}
package MapReduce;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordCountMapper extends Mapper<LongWritable, Text,
        Text, IntWritable> {
        @Override
        protected void map(LongWritable key, Text value, Mapper<
                LongWritable, Text, Text, IntWritable> .Context context)
        throws IOException, InterruptedException {
            String line = value.toString();
            String[] words = line.split("");
            for (String word : words) {
                context.write(new Text(word), new IntWritable(1));
            }
        }
}
package MapReduce;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.log4j.BasicConfigurator;

public class WordCountDriver {
    public static void main(String[] args) throws Exception {
        BasicConfigurator.configure();
        Configuration conf = new Configuration();
        conf.set("mapreduce.framework.name", "local");
        Job wcjob = Job.getInstance(conf);
        wcjob.setJarByClass(WordCountDriver.class);
        wcjob.setMapperClass(WordCountMapper.class);
        wcjob.setReducerClass(WordCountReducer.class);
        wcjob.setMapOutputKeyClass(Text.class);
        wcjob.setMapOutputValueClass(IntWritable.class);
        wcjob.setOutputKeyClass(Text.class);
        wcjob.setMapOutputValueClass(IntWritable.class);
        FileInputFormat.setInputPaths(wcjob,"D:/mr/input");
        FileOutputFormat.setOutputPath(wcjob,new Path("D:/mr/output"));
        boolean res = wcjob.waitForCompletion(true);
        System.exit(res ? 0 : 1);

    }
}

 报错:

Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/C:/Users/qy/IdeaProjects/hadoop/D:/mr/output
	at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:321)
	at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:264)
	at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:385)
	at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:302)
	at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:319)
	at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:197)
	at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1297)
	at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1294)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1692)
	at org.apache.hadoop.mapreduce.Job.submit(Job.java:1294)
	at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1315)
	at MapReduce.WordCountDriver.main(WordCountDriver.java:26)

Process finished with exit code 1

 

 

输入文件路径不存在,你这个错误信息不全,贴错误信息,不要截图。

猜测是 new Path() 的问题,你不 new 呢,直接写路径。

file:/C:/Users/qy/IdeaProjects/hadoop/D:/mr/output  这个提示 应该就是new Path默认是相对路径 所以自动加上了工程所在路径

new Path("D:/mr/input")试下

用的哪种集群搭建模式啊?输入路径改下试试

试试D://mr//output

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632