如何在oozie工作流中的Java动作中传递参数?

时间:2019-05-27 17:24:44

标签: java oozie oozie-workflow

我正在尝试使用一个动作(一个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>

这种方法正确吗?

1 个答案:

答案 0 :(得分:1)

  • java操作将执行您的类的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
  • 确保您还随工作流一起上载了所有依赖项。

参考文献: