有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

hadoop设置作业。java代码中的属性文件来启动oozie操作

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

共 (1) 个答案

  1. # 1 楼答案

    这是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