对Mapreduce数据集进行排序

时间:2015-12-05 16:12:47

标签: sorting hadoop mapreduce dataset

我正在尝试运行以下项目来对数据集进行排序。

但是,当我执行命令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

以下是该项目的链接:

https://vangjee.wordpress.com/2012/03/20/secondary-sorting-aka-sorting-values-in-hadoops-mapreduce-programming-paradigm/#comment-2342

2 个答案:

答案 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权威指南中有更多细节。

但是你的问题呢?空间就是解决方案。