hadoop,在一个作业中链接多个作业

iqjalb3h  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(353)

我试图在hadoop中将多个作业链接到一个作业中(我使用的是api版本1.2.1)。我偶然看到一篇关于这个主题的文章,请看这里。
我的主要课程如下:http://pastebin.com/c21pkm1j (我做了一个小的清理和重新安排,使它更可读)我正在使用cloudera演示vm。在我使用链锁之前,我的简单工作做得很好。这个版本仅仅在10-20秒内完成,没有任何错误,也没有任何来自日志文件的有价值的信息。我很确定没有一项工作真正开始,但我不知道为什么。
编辑:根本不创建输出目录。
编辑:我将jobrunner和handlerun片段包含到我的代码中,以便从此处进行调试。它运行两次迭代(我看到“仍在运行”两次),并正常退出。
编辑:我像个老板一样忙了好几个小时。似乎有很多“工作”的例子,hadoop版本和正确的api调用都会出现问题(hadoop core.jar中有许多类的名称相同)。

mxg2im7a

mxg2im7a1#

这个答案可能对你有帮助。根据您使用的api,您必须使用setmapperclass和setreducerclass以及submit job不断更改Map和减少类。另外,如果要将上一个作业的输出作为下一个作业的输入,请使用字符串变量动态地提供输出路径(如果不需要这部分,可以使用脚本)

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";
   ......
   ......

相关问题