从 Oozie 3 开始(还没有尝试过 Oozie 4),我的主要问题的答案是:你不能。没有工具(奇怪地)为使用该oozie.launcher.action.main.class
属性定义的主类指定任何参数。
@Dmitry 在评论中建议仅使用 Oozie java 操作适用于级联作业(或任何 Hadoop 相关作业),因为 Oozie 在启动作业时将所有 Hadoop jar 放入类路径中。
我在我的博客中记录了一个从 Oozie 启动级联作业的工作示例:http: //thornydev.blogspot.com/2013/10/launching-cascading-job-from-apache.html
这是对我有用的 workflow.xml 文件:
<workflow-app xmlns='uri:oozie:workflow:0.2' name='cascading-wf'>
<start to='stage1' />
<action name='stage1'>
<java>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<main-class>com.mycompany.MyCascade</main-class>
<java-opts></java-opts>
<arg>/user/myuser/dir1/dir2</arg>
<arg>my-arg-2</arg>
<arg>my-arg-3</arg>
<file>lib/${EXEC}#${EXEC}</file>
<capture-output />
</java>
<ok to="end" />
<error to="fail" />
</action>
<kill name="fail">
<message>FAIL: Oh, the huge manatee!</message>
</kill>
<end name="end"/>
</workflow-app>
在job.properties
workflow.xml 随附的文件中,EXEC 属性定义为:
EXEC=mybig-shaded-0.0.1-SNAPSHOT.jar
并将作业放入这两个定义文件所在的lib目录中。