如何在java中运行pentaho pig job

时间:2016-04-06 12:07:58

标签: java hadoop apache-pig pentaho

我已经用勺子创建了工作,我正在使用猪脚本执行器。在UI中它工作正常。它调用猪脚本并提供所需的输出

  

输出:成功将445454条记录(15256953字节)存储在:   “/蜂巢/仓库/博客/ aggregate_pig_test3”

     

计数器:写入的总记录数:445454写入的总字节数:   15256953 Spillable Memory Manager溢出计数:0总袋数   主动溢出:0主动溢出的总记录:0

     

Job DAG:job_local270305097_0001 2016/04/06 17:24:12 - Pig Script   执行人 - 2016/04/06 17:24:12 - 成功! 2016/04/06 17:24:12 - 猪   脚本执行者 - Num成功的工作:1个失败的工作:0

现在当我在java中使用相同的.kjb文件时,我没有得到所需的输出。看起来我的脚本没有被执行仍然没有任何异常

我的java代码

         KettleEnvironment.init();
         Properties props = new Properties();
        JobMeta  metadata = new JobMeta("pig.kjb",null);
        Job  job = new Job (null, metadata);
        job.start();
        job.waitUntilFinished();

        System.err.println(job.getStatus());
          if (job.getErrors()!=0) {
            System.out.println("Error encountered!");
         }

    } catch (KettleException e) {
        e.printStackTrace();
    }
}

java方法的输出:

  

2016/04/06 18:25:59 - pig - 开始执行作业2016/04/06 18:25:59    - 猪 - 开始进入[Pig Script Executor] 2016/04/06 18:25:59 - pig - 完成作业[Pig Script Executor](结果= 2016/04/06 18:25:59 - pig - 作业执行完毕

但没有任何反应。就像在勺子UI中存储文件一样。我不知道缺少什么。为什么我的java代码没有执行。

1 个答案:

答案 0 :(得分:0)

我错过了-DKETTLE_PLUGIN_BASE_FOLDERS,这是pentaho中hadoop配置所必需的。