JAVA端通过Oozie Client 启动Oozie任务

oozie虽然内置了条件触发,但有时当我们的触发条件比较复杂的时候,可以使用java程序来控制其运行,而oozie同样提供了client端供使用。


通过OozieClient 端设置conf

Workflow.xml指定任务内所需配置文件等信息,如hive的配置文件等。

需要注意必须指定user.name,否则将导致权限错误,使程序一直处于Hold状态。

1JAVA端调用

事例中参数内容为方便阅读,将真实内容写出,但程序内参数均可从外面配置文件读入。

OozieClient内提供了多种oozie任务可供选择,见如下代码标红处:

参见:Apache Oozie Client 3.3.2 API


//execute the oozie work flow
// get the config info
DRBServiceConfigHandler mic = new DRBServiceConfigHandler();
OozieClient wc = new OozieClient(DRBServiceConfigHandler.getOozieService());
 
// create a workflow job configuration and set the workflow
// application path
Properties conf = wc.createConfiguration();
 
conf.setProperty("JobId", RESTServiceJobId);
 
conf.setProperty(OozieClient.APP_PATH, "hdfs://moma03:9000/user/applications/ea5be0c6-6ed8-4b6e-b444-29f7ae1998fe/workflow/workflow.xml");
conf.setProperty("jobTracker", "moma03:9001");
conf.setProperty("queueName", "default");
conf.setProperty("nameNode", "hdfs://moma03:9000");
conf.setProperty("user.name", "biadmin");
conf.setProperty("oozie.libpath", "/biginsights/oozie/sharedLibraries/hive");
conf.setProperty("script", "alter table bb rename to cc");
 
// submit and start the workflow jobString jobId = wc.run(conf);

String jobId = wc.run(conf);


 
  

 

2Workflow.xml文件





${jobTracker}
${nameNode}
/biginsights/oozie/sharedLibraries/hive/conf/hive-site.xml



mapred.compress.map.output
true


mapred.job.queue.name
${queueName}


oozie.hive.defaults
/biginsights/oozie/sharedLibraries/hive/hive-default.xml




SCRIPT=${script}





hive failed, error
message[${wf:errorMessage(wf:lastErrorNode())}]




 
  

3adhoc.txt文件

${SCRIPT}

这个文件也可以直接写入hive命令,但考虑到扩展性,这个文件写成这样更方便修改。


本次只是通过java 调用一个包含hive语句的oozie,一般工作中,oozie内往往需要更多内容。


你可能感兴趣的:(oozie,大数据)