Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在oozie工作流中传递java操作中的参数?_Java_Oozie_Oozie Workflow - Fatal编程技术网

如何在oozie工作流中传递java操作中的参数?

如何在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

我正试图用一个动作创建一个Oozie工作流,一个java动作来启动一个程序来解析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>

${jobTracker}
${nameNode}
解析文件
路径/to.the/file.xlsx
lib/myJarFile.jar#myJarFile.jar
这种方法正确吗?

  • java操作将执行类的
    公共静态void main(String[]args)
    。确保使用完全指定的包名。例如
    a.b.c.MainClass
  • 如果将
    myJarFile.jar
    存储在HDFS上
    workflow.xml
    旁边的
    lib
    目录中,则不需要
    标记。例如:
  • 确保您还上载了工作流中的所有依赖项
参考资料:

  • Java操作的描述:
  • Java操作的工作流xml示例:

好的,这很有帮助,只是一件事,例如我正在从命令行运行这个jar文件:
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