为仅映射作业运行Hadoop Map Reduce时出错



我想在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

我做错了什么?

仅映射作业仍然需要指定输出位置。正如错误所说,您没有指定此项。

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

您想要的是org.apache.hadoop.mapreduce.lib.output.NullOutputFormat而不是org.apache.hadoop.mapred.lib.NullOutputFormat,这是第二个错误所指示的,尽管它很微妙。

相关内容

  • 没有找到相关文章

最新更新