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 に答える