我正在尝试使用一个动作(一个Java动作)创建一个Oozie工作流,以启动一个程序来解析HDFS内的excel文件,因此,要对此Java程序解析文件,我需要将其位置传递给该文件,没有oozie工作流程,我只是使用需要的参数调用jar文件,例如:
java -jar myJarFile.jar hdfs:///path/to/the/file.xlsx
现在,在oozie工作流程内的java操作中,我需要编写如下内容:
<action name="parse-file">
<java>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<main-class>parseFile</main-class>
<arg>path/to.the/file.xlsx</arg>
<file>lib/myJarFile.jar#myJarFile.jar</file>
</java>
<ok to="sen-success-email"/>
<error to="failed-notification-email"/>
</action>
这种方法正确吗?
答案 0 :(得分:1)
public static void main(String[] args)
。确保使用完全指定的程序包名称。例如a.b.c.MainClass
<file>
存储在HDFS上myJarFile.jar
旁边的lib
目录中,则不需要workflow.xml
标记。例如:workflow_dir/workflow.xml
workflow_dir/lib
workflow_dir/lib/myJarFile.jar
参考文献: