2012-10-11 45 views
2

我是java新手,在使用java代碼運行oozie作業時遇到了一些麻煩。我無法找出代碼中的問題。一些幫助將非常感激。這裏是我的代碼使用java代碼運行oozie工作流程

import java.util.Properties; 

import org.apache.oozie.client.OozieClient; 
import org.apache.oozie.client.WorkflowJob; 

public class oozie { 

public static void main(String[] args) { 
    OozieClient wc = new OozieClient("http://host:11000/oozie"); 

    Properties conf = wc.createConfiguration(); 

    conf.setProperty(OozieClient.APP_PATH, "hdfs://cluster/user/apps/merge-psp-logs/merge-wf/workflow.xml"); 
    conf.setProperty("jobTracker", "jobtracker.bigdata.com:8021"); 
    conf.setProperty("nameNode", "hdfs://namenode.bigdata.com:8020"); 
    conf.setProperty("queueName", "jobtracker.bigdata.com:8021"); 
    conf.setProperty("appsRoot", "hdfs://namenode.bigdata.com:8020/user/workspace/apps"); 
    conf.setProperty("appLibLoc", "hdfs://namenode.bigdata.com:8020/user/workspace/lib"); 
    conf.setProperty("rawlogsLoc", "hdfs://namenode.bigdata.com:8020/user/workspace/"); 
    conf.setProperty("mergedlogsLoc", "jobtracker.bigdata.com:8021"); 
    try { 
     String jobId = wc.run(conf); 
     System.out.println("Workflow job submitted"); 

     while (wc.getJobInfo(jobId).getStatus() == WorkflowJob.Status.RUNNING) { 
      System.out.println("Workflow job running ..."); 
      Thread.sleep(10 * 1000); 
     } 
     System.out.println("Workflow job completed ..."); 
     System.out.println(wc.getJobInfo(jobId)); 
    } catch (Exception r) { 
     System.out.println("Errors"); 
    } 
} 
} 

雖然我能夠使用命令行

+0

編譯或運行時錯誤? –

+0

@GiulioQuaresima給我運行時錯誤 – Chirag

+0

而運行時錯誤是? –

回答

2

沒有任何進一步的信息來啓動工作,我會說這是很可能導致運行時錯誤:

conf.setProperty(OozieClient.APP_PATH, 
    "hdfs://cluster/user/apps/merge-psp-logs/merge-wf/workflow.xml"); 
conf.setProperty("jobTracker", "jobtracker.bigdata.com:8021"); 
conf.setProperty("nameNode", "hdfs://namenode.bigdata.com:8020"); 
conf.setProperty("queueName", "jobtracker.bigdata.com:8021"); 

除非您有兩個羣集,否則我的猜測是您的APP_PATH指向與您的nameNode屬性中指定的HDFS實例相同的HDFS實例,在這種情況下,請嘗試:

conf.setProperty(OozieClient.APP_PATH, 
    "hdfs://namenode.bigdata.com:8020/user/apps/merge-psp-logs/merge-wf/workflow.xml"); 

您還可能要到QUEUENAME變成一個真正的隊列名稱(可能是「默認」,除非jobtracker.bigdata.com:8021是您隊列的實際名稱):

conf.setProperty("queueName", "default"); 
從這些意見

除此之外,嘗試發佈您看到的實際運行時錯誤。

+0

進行了必要的更改。不再有運行時錯誤。根據定義的異常,控制檯打印「錯誤」。任何想法可能是什麼原因? – Chirag

+0

說真的,如果你發佈了你看到的錯誤 –

+0

得到了正常工作,這將容易得多。這是因爲,首先是你要求做出的最後變化,包括json-simple jar在classpath中 – Chirag