Oozie有一个名为oozie.launcher.action.main.class的配置属性,你可以在其中为map-reduce动作(或shell动作)传递“主类”的名称,如下所示:
<configuration>
<property>
<name>oozie.launcher.action.main.class</name>
<value>com.company.MyCascadingClass</value>
</property>
</configuration>
但是我需要将参数传递给我的主类,并且看不到这样做的方法。有什么想法吗?
我在问,因为我正在尝试从Oozie中启动Cascading类/流程,到目前为止我尝试过的所有选项都失败了。如果有人从Oozie那里得到了Cascading的工作,请告诉我,我会发布另一个问题,特别要求。
答案 0 :(得分:4)
从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>
在workflow.xml附带的job.properties
文件中,EXEC属性定义为:
EXEC=mybig-shaded-0.0.1-SNAPSHOT.jar
并将作业放入下面这两个定义文件所在的lib目录中。