如何在一个单独的java程序中运行集群上的spark程序?

时间:2015-07-23 09:08:01

标签: java hadoop apache-spark

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

例如:我有一个程序名执行器(java程序)。

和一些火花程序 - 加两个数字 - 减去两个数字

那么如何在我的java程序中运行Cluster上的spark程序,即本例中的执行程序。

感谢!!!

3 个答案:

答案 0 :(得分:1)

检查spark job server Project,让您创建共享上下文并从休息界面执行作业:https://github.com/spark-jobserver/spark-jobserver 希望这会有用

答案 1 :(得分:0)

可能的解决方案可能是:

  1. 编写一个bash脚本并按顺序执行Spark程序。

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

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

答案 2 :(得分:0)

您可以这样使用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()