【问题标题】:How to run a spark program on cluster from within a separate java program?如何从单独的 java 程序中在集群上运行 spark 程序?
【发布时间】:2017-05-19 21:17:18
【问题描述】:

我有一个运行单独的小型 spark 程序的 java 程序,那么如何让我的 java 程序在集群上运行小型 spark 模块/程序?

例如:我有一个程序名executor(java程序)。

还有一些火花程序 --添加两个数字 --减去两个数字

那么我如何从我的 java 程序(即本例中的执行程序)在 Cluster 上运行这些 spark 程序。

谢谢!!!

【问题讨论】:

    标签: java hadoop apache-spark


    【解决方案1】:

    查看 spark job server 项目,让你创建一个共享上下文并从一个 rest 接口执行作业:https://github.com/spark-jobserver/spark-jobserver 希望这会有用

    【讨论】:

    • 作为评论可能比作为答案更好,它并没有真正回答问题。如果 spark 作业服务器项目有一些有用的东西,请链接到它。
    • 请通过参考或代码 sn-p 屏蔽来改进此答案。谢谢。哦,不要让答案看起来像评论或问题。让它具有权威性,而不是一厢情愿:P
    【解决方案2】:

    可能的解决方案是:

    1. 编写一个bash脚本,依次执行Spark程序。

    2. 将所有操作写在一个程序中,并在一个程序中调用每个操作并打印各自的结果。

    3. 编写单个程序但使用并行编程原理。这意味着,并行执行这样的操作。好吧,这取决于您拥有什么类型的数据以及您想要实现什么,很难评论。

    【讨论】:

      【解决方案3】:

      您可以这样使用 SparkLauncher:

      import org.apache.spark.launcher.SparkLauncher
      import scala.collection.JavaConverters._
      
      
      val env = Map(
        "HADOOP_CONF_DIR" -> hadoopConfDir,
        "YARN_CONF_DIR" -> yarnConfDir
      )
      
      println(env.asJava)
      val process = new SparkLauncher(env.asJava)
        .setSparkHome(sparkHome)
        .setAppResource(jarPath)
        .setAppName(appName)
        .setMainClass(className) //Main class in your uber spark JAR 
        .setMaster(master)
        //.setConf("spark.driver.memory", "2g") example additional conf prop
        .setVerbose(true)
        .launch()
      

      【讨论】:

        猜你喜欢
        • 2014-05-23
        • 2016-03-28
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 2016-08-17
        • 2016-10-15
        • 2018-09-28
        • 2016-03-12
        相关资源
        最近更新 更多