拥有倍数乔布斯,如何提交作为一个独特的工作?

时间:2016-02-11 14:14:23

标签: scala apache-spark jobs

我有一些像script.sh运行的作业:

JobA
JobB

每个作业都通过脚本运行,集群“看到”每个作业。

所以我的目的是将所有工作打包成一个大工作,这样集群处理就像一个独特的工作。

我一直在使用像这样的库Spark Launcher

class jobLaunch{
 val spark = new SparkLauncher()

      .setAppResource("../lib/assembly-4.0.0-SNAPSHOT.jar") // TODO
      .setMainClass("com.main.class")
      .setMaster("yarn")
      .setConf("spark.ui.port","1234")
      .launch()

def startExternalProcess = {
  val processOut = spark.getInputStream
  var is_finished = false

  new Thread(new Runnable() {
    def run() {
      val exit = spark.exitValue()
      is_finished = true
    }
  }).start()

  new Thread(new Runnable() {
    def run() {
      while (!is_finished) {
        scala.io.Source.fromInputStream(processOut).getLines.foreach{info(_)}
        Thread.sleep(1000)
      }
    }
  }).start()
  info("hello there")
  val exit = spark.exitValue()
}

...

override def run(sc: SparkContext, hivec: HiveContext): Unit = {
   val jl = new jobLaunch
   val jl2 = new jobLaunch
   jl.startExternalProcess
   jl2.startExternalProcess

 }
}

此代码用于测试目的,当我运行时,我意识到在不使用群集的情况下运行就像proccess的作业。

所以我仍然不知道我是否可以在一份工作中运行子工作。

0 个答案:

没有答案