java - Hadoop,在单个作业中链接多个作业

标签 java hadoop mapreduce

我正在尝试将多个作业链接到Hadoop中的单个作业(我正在使用API​​版本1.2.1)。
我碰到了有关该主题的文章,请参阅here

我的主要类(class)如下:http://pastebin.com/C21PKM1j(我做了一次小小的清理并重新排列以使其更具可读性)
我正在使用Cloudera演示VM。在使用链接之前,我的简单工作效果很好。
此版本仅需10到20秒即可完成,没有任何错误,并且日志文件中没有任何有值(value)的信息。
我敢肯定,实际上没有一项工作可以启动,但是我不知道为什么。

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

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

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

最佳答案

This答案可能会对您有所帮助。根据您使用的API,您必须不断更改 map 并使用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";
   ......
   ......

关于java - Hadoop,在单个作业中链接多个作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18464542/

相关文章:

java - spring aop执行返回类型

java - android中的耳机按钮双击

java - 将 Web UI 连接到 Apache HBase 的最有效方法是什么?

java - 如何在 Spring-XD 作业中使用 shellCommandProceccesor

Hadoop 管道 : how to pass large data records to map/reduce tasks

java - 映射器输出在组合器中加倍

java - 正在广播接收器处启动 ANR 服务修复

hadoop - 如何生成自定义输出文件名?

mongodb - MongoDB 中 "Parent Links"树上的 MapReduce

java - 在 Geb 和 Spock 测试中无法删除 cookie