1

我想在 中运行仅地图作业Hadoop MapReduce,这是我的代码:

    Configuration conf = new Configuration();
    Job job = new Job(conf);
    job.setJobName("import");

    job.setMapperClass(Map.class);//Custom Mapper
    job.setInputFormatClass(TextInputFormat.class);
    job.setNumReduceTasks(0);

    TextInputFormat.setInputPaths(job, new Path("/home/jonathan/input"));

但我得到了错误:

13/07/17 18:22:48 ERROR security.UserGroupInformation: PriviledgedActionException
as: jonathan cause:org.apache.hadoop.mapred.InvalidJobConfException: 
Output directory not set. 
Exception in thread "main" org.apache.hadoop.mapred.InvalidJobConfException: 
 Output directory not set.

然后我尝试使用这个:

job.setOutputFormatClass(org.apache.hadoop.mapred.lib.NullOutputFormat.class);

但它给了我一个编译错误:

java: method setOutputFormatClass in class org.apache.hadoop.mapreduce.Job 
  cannot be applied to given types;
  required: java.lang.Class<? extends org.apache.hadoop.mapreduce.OutputFormat>
  found: java.lang.Class<org.apache.hadoop.mapred.lib.NullOutputFormat>
  reason: actual argument java.lang.Class
  <org.apache.hadoop.mapred.lib.NullOutputFormat> cannot be converted to 
  java.lang.Class<? extends org.apache.hadoop.mapreduce.OutputFormat> 
  by method invocation conversion

我究竟做错了什么?

4

1 回答 1

6

仅地图作业仍需要指定输出位置。正如错误所说,您没有指定这一点。

我认为你的意思是你的工作根本没有产出。Hadoop 仍然希望您指定一个输出位置,尽管不需要编写任何内容。

你不想org.apache.hadoop.mapreduce.lib.output.NullOutputFormatorg.apache.hadoop.mapred.lib.NullOutputFormat这是第二个错误所表明的,尽管它很微妙。

于 2013-07-17T23:31:18.820 回答