1

我正在尝试将多个作业链接到 Hadoop 中的一个作业中(我使用的是 API 版本 1.2.1)。我遇到了有关该主题的文章,请参见此处

我的主要课程如下: http: //pastebin.com/C21PKM1j(我做了一个小的清理和重新排列以使其更具可读性)我正在使用 Cloudera 演示 VM。在我使用链接之前,我的简单工作运行良好。这个版本在 10-20 秒内完成,没有任何错误和日志文件中的任何有价值的信息。我很确定实际上没有任何工作开始,但我不知道为什么。

编辑:根本没有创建输出目录。

编辑:我将 jobRunner 和 handleRun 片段包含在我的代码中,以便从这里进行调试。它运行了两次迭代(我看到“仍在运行”两次),然后正常退出。

编辑:我像老板一样在谷歌上搜索了几个小时。似乎有许多“工作”示例,问题出现在 hadoop 版本和正确的 API 调用中(许多类在 hadoop-core.jar 中出现了相同的名称)。

4

1 回答 1

0

这个答案可能会对你有所帮助。根据您使用的 API,您必须使用 setMapperClass 和 setReducerClass 不断更改地图和减少类并提交作业。此外,如果您想将上一个作业的输出作为下一个作业的输入,请使用字符串变量动态提供输出路径。(如果您不想要这部分,您可以编写脚本)

    String input=args[0];
    String out=args[1];
    String output = out+"job1";
    public static String OUTPUT_FILE_NAME = "/part-00000";

以下是旧 API

  /*code for changing mapper and reducer classes*/        
  FileInputFormat.setInputPaths(conf, new Path(input));
  FileOutputFormat.setOutputPath(conf, new Path(output));
  JobClient.runJob(conf);
  input= output+OUTPUT_FILE_NAME;
  output = out + "job2";
   ......
   ......
于 2015-04-18T07:09:49.490 回答