我正在尝试运行以下项目来对数据集进行排序。
但是,当我执行命令Hadoop jar xx.jar /inputdir /output dir
时,我在终端上收到以下错误:
org.apache.hadoop.mapred.InvalidJobConfException: Output directory not set.
在项目的README文件中提到:
hadoop jar mrss-0.1.jar demo.SsJob -Dmapred.input.dir=data-stock -Dmapred.output.dir=result-stock
以下是该项目的链接:
答案 0 :(得分:0)
您需要添加输入格式的参数以从输入路径读取,并使用Outputformat写入输出路径。 以下是有关如何提交工作的示例:
// Create a new Job
Job job = Job.getInstance();
job.setJarByClass(MyJob.class);
// Specify various job-specific parameters
job.setJobName("myjob");
job.setInputPath(new Path("in"));
job.setOutputPath(new Path("out"));
job.setMapperClass(MyJob.MyMapper.class);
job.setReducerClass(MyJob.MyReducer.class);
// Submit the job, then poll for progress until the job is complete
job.waitForCompletion(true);
或者你可以通过使用-D选项在命令行传递参数来执行jar。
答案 1 :(得分:0)
我知道这很尴尬......但你需要在-D之后提供一个空格。 I.e" -Dmapred.output.dir"应该作为" -D mapred.output.dir"。
这是因为-D配置传递不像普通的jvm配置那样使用Hadoop。
在hadoop权威指南中有更多细节。
但是你的问题呢?空间就是解决方案。