hadoop—在java代码中设置job.properties文件以启动oozie操作

qlckcl4x  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(284)

我正在尝试使用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();
    }
jaxagkaj

jaxagkaj1#

这是一个很好的例子 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

相关问题