【发布时间】:2018-01-21 13:44:39
【问题描述】:
我正在尝试使用命令通过 hadoop 运行 jar 文件
hadoop jar test.jar org.ipiran.hadoop.sample.TestMapReduce /user/data.txt /output/1.txt 4
但它返回错误
退出代码:1 异常信息:系统找不到指定的路径
我尝试不指定类,但得到了相同的结果。 我有文件 data.txt。 我的主要java代码
public int run(String[] args) throws Exception {
Configuration conf = this.getConf();
conf.set("fs.defaultFS", "hdfs://localhost:9000/");
conf.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName());
conf.set("fs.file.impl", org.apache.hadoop.fs.LocalFileSystem.class.getName());
conf.set("source", args[2]);
long numUpdated = 1;
int code = 0;
int numIterations = 1;
FileSystem hdfs = FileSystem.get(conf);
while (numUpdated > 0) {
logger.info("Iteration: " + numIterations);
String input, output;
Job job = Job.getInstance(conf, "word count");
if (numIterations == 1) {
input = args[0];
} else {
input = args[1] + "-" + (numIterations - 1);
}
output = args[1];// + "-" + numIterations;
job.setJarByClass(TestMapReduce.class);
job.setMapperClass(testmap.class);
job.setReducerClass(TestReduce.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
FileInputFormat.addInputPath(job, new Path(input));
FileOutputFormat.setOutputPath(job, new Path(output));
code = job.waitForCompletion(true) ? 0 : 1;
Counters jobCounters = job.getCounters();
numUpdated = jobCounters.
findCounter(MoreIterations.numUpdated).getValue();
if (numIterations > 1) {
hdfs.delete(new Path(input), true);
logger.info("Updated: " + numUpdated);
}
numIterations += 1;
}
return code;
}
我使用的是 Windows 10。有人知道这里出了什么问题吗?
【问题讨论】:
-
我不知道如何将它与hadoop代码一起应用。你能详细说明一下吗?
-
为什么要将文件上传到
/user,而不是像/user/nnnzzzaaa这样的实际HDFS 用户文件夹?