使用oozie工作流程启动火花程序

时间:2015-03-24 13:07:35

标签: scala apache-spark workflow oozie

我正在使用一个使用spark包的scala程序。 目前我使用来自网关的bash命令运行程序: / homes / spark / bin / spark-submit --master yarn-cluster --class" com.xxx.yyy.zzz" --driver-java-options" -Dyyy.num = 5" a.jar arg1 arg2

我想开始使用oozie来运行这份工作。我有一些挫折:

我应该在哪里放置spark-submit可执行文件?在hfs? 如何定义火花动作?应该在哪里出现--driver-java-options? oozie动作应该如何?它与出现here的那个相似吗?

1 个答案:

答案 0 :(得分:6)

如果你有足够新的oozie版本,你可以使用oozie的spark任务:

https://github.com/apache/oozie/blob/master/client/src/main/resources/spark-action-0.1.xsd

否则你需要执行一个调用spark的java任务。类似的东西:

   <java>
        <main-class>org.apache.spark.deploy.SparkSubmit</main-class>

        <arg>--class</arg>
        <arg>${spark_main_class}</arg> -> this is the class com.xxx.yyy.zzz

        <arg>--deploy-mode</arg>
        <arg>cluster</arg>

        <arg>--master</arg>
        <arg>yarn</arg>

        <arg>--queue</arg>
        <arg>${queue_name}</arg> -> depends on your oozie config

        <arg>--num-executors</arg>
        <arg>${spark_num_executors}</arg>

        <arg>--executor-cores</arg>
        <arg>${spark_executor_cores}</arg>

        <arg>${spark_app_file}</arg> -> jar that contains your spark job, written in scala

        <arg>${input}</arg> -> some arg 
        <arg>${output}</arg>-> some other arg

        <file>${spark_app_file}</file>

        <file>${name_node}/user/spark/share/lib/spark-assembly.jar</file>
    </java>