如何在oozie工作流中传递java操作中的参数?
我正试图用一个动作创建一个Oozie工作流,一个java动作来启动一个程序来解析HDFS中的excel文件,因此,为了让这个java程序解析文件,我需要将文件的位置传递给它,如果没有Oozie工作流,我只需使用我需要的参数调用jar文件,如:如何在oozie工作流中传递java操作中的参数?,java,oozie,oozie-workflow,Java,Oozie,Oozie Workflow,我正试图用一个动作创建一个Oozie工作流,一个java动作来启动一个程序来解析HDFS中的excel文件,因此,为了让这个java程序解析文件,我需要将文件的位置传递给它,如果没有Oozie工作流,我只需使用我需要的参数调用jar文件,如: java -jar myJarFile.jar hdfs:///path/to/the/file.xlsx 现在,在oozie工作流中的java操作中,我需要编写如下内容: <action name="parse-file"> &l
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>
${jobTracker}
${nameNode}
解析文件
路径/to.the/file.xlsx
lib/myJarFile.jar#myJarFile.jar
这种方法正确吗?- java操作将执行类的
。确保使用完全指定的包名。例如公共静态void main(String[]args)
a.b.c.MainClass
- 如果将
存储在HDFS上myJarFile.jar
旁边的workflow.xml
目录中,则不需要lib
标记。例如:
- 确保您还上载了工作流中的所有依赖项
- Java操作的描述:
- Java操作的工作流xml示例:
java-cp FileProcessosSQL.jar:'hadoop classpath':'hdfs classpath':'hbase classpath'com.kata.team1.ProcessSQL SqlInsertion.sql
只是为了弄清楚,在我的文件夹workflow/lib
中,我应该放置hadoop类路径
、HDFS类路径
和hbase类路径
中的库,这些库应该可以工作。或者,您也可以将依赖项上载到HDFS,并在job.properties
中使用oozie.libpath=/path/to/jars、另一个/path/to/jars
,或定义您自己的共享库。
workflow_dir/workflow.xml
workflow_dir/lib
workflow_dir/lib/myJarFile.jar