在第一个hadoop作业的输出上使用分布式缓存

to94eoyn  于 2021-06-04  发布在  Hadoop
关注(0)|答案(0)|浏览(238)

我目前正在运行两个作业,使得job2依赖于job1。我计划使用job1的输出并将其作为job2中的分布式缓存传递。这将在job2中用作处理另一组数据的引用。我在两个作业中编写了加载函数,在这两个作业中我完成了作业配置。然后我使job2依赖于job1并将其提交给jobcontrol。问题是,当我在job2的load函数中使用分布式缓存时,文件还没有创建,我会得到一个异常。我该怎么处理?
我看不到任何可以重载的initialize()etc方法,而不是使用load()函数。我正在使用新的api。

MyTranslationBuilderDriver job1 = new MyTranslationBuilderDriver();
    job1.load(args, "translator/path");
    MyTranslatorDriver job2 = new MyTranslatorDriver();
    job2.load(args, "path");
    JobControl jbcntrl=new JobControl("jbcntrl");
    ControlledJob cjob1 = new ControlledJob(job1.job, null);
    ControlledJob cjob2 = new ControlledJob(job2.job, null);
    cjob2.addDependingJob(cjob1);
    jbcntrl.addJob(cjob2);
    jbcntrl.run();
    Thread thread = new Thread(jbcntrl);
      thread.start();
      while (!jbcntrl.allFinished()) {
        try {
          Thread.sleep(10000);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }
      jbcntrl.stop();
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题