1

我正在尝试使用 java 代码启动一个 oozie 操作。使用命令行时,我们通过“-config job.properties”指定属性文件,它知道选择哪个工作流。我们如何在 java 代码中定义“job.properties”文件来完成同样的任务?

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

    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 (OozieClientException oozieClientException) {
        oozieClientException.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
4

1 回答 1

0

它是ResourceBundel. 尝试与您的程序集成。

public class BundleTest {
    private ResourceBundle bundle;

    public BundleTest() {
        bundle = ResourceBundle.getBundle("job");
    }

    public String getMessage(String id, Object... params) {
        String text = null;
        try {
            text = bundle.getString(id);
        } catch (MissingResourceException e) {
            text = "!! key " + id + " not found !!";
        }
        if (params != null) {
            MessageFormat mf = new MessageFormat(text);
            text = mf.format(params, new StringBuffer(), null).toString();
        }
        return text;
    }

    public static void main(String[] args) {
      BundleTest test = new BundleTest();
        String jobTracker = test.getMessage("jobTracker");
        String nameNode = test.getMessage("nameNode");
        String queueName = test.getMessage("queueName");
        String appsRoot = test.getMessage("appsRoot");
        System.out.println(jobTracker);
        System.out.println(nameNode);
        System.out.println(queueName);
        System.out.println(appsRoot);

        String message2 = test.getMessage("JOB_KEY_2", "Your First");
        System.out.println(message2);
    }
}

工作属性

jobTracker=jobtracker.com:8021
nameNode=hdfs://namenode.com:8020
queueName=jobtracker.com:8021
appsRoot=hdfs://namenode.com:8020/user/apps;
#With Parameter
JOB_KEY_2= {0} Job

输出 :

jobtracker.com:8021
hdfs://namenode.com:8020
jobtracker.com:8021
hdfs://namenode.com:8020/user/apps;
Your First Job
于 2012-10-17T06:36:40.310 回答