我不想在oozie工作流xml中设置作业驱动程序配置,比如inputformat mapper类等,而是调用exampledecision.java。例如,decision main方法将负责作业设置和配置。怎么做?
oozie\u cook\u书中的ii java主动作决策节点说明是否等于 java ExampleDecision <strings...>
并将作业作为普通java作业提交
或者
会等于 Hadoop jar SomeJar.ExampleDecision <strings...>
1条答案
按热度按时间xtfmy6hx1#
是的,您可以很好地使用java创建map/reduce代码,在该代码中,main类像往常一样负责配置作业和作业调度。
那你可以用
java
oozie工作流中的action标记来调用jar中的主类。在这里,主类将分派map/reduce作业,这与使用
map-reduce
标签。你必须强调的主要考虑是你应该只使用
job.waitForCompletion(true)
声明在主类中分派作业。这样做的重要原因是在java操作节点上保持oozie的执行,直到主类调度的map/reduce作业完成。
edit:-
打电话的区别
hadoop jar
以及java jar
将hadoop
命令会在mapreduce作业执行之前安排一些env属性,如java\u home、hadoop\u home、hadoop\u opts等。大多数情况下,您可能已经在环境变量中定义了这些属性,在使用java
命令。当你使用
java
动作使用oozie工作流调用mapreduce作业时,oozie将无法收集有关已调度mapreduce作业的统计信息、计数器,因为实际的mr作业将从为该作业调度的容器派生java action
.所以
Java action node
由oozie执行的任务将在一个单独的容器(maptask)中运行,该容器只是准备作业并等待作业完成的驱动程序类,然后oozie工作流也将等待获取java action MapTask
完整的。您将能够从Oozie -info
命令。希望这有帮助。