【问题标题】:how to get the Hadoop-spark job's tracking URL or catch the spark-submit output by scala code如何获取 Hadoop-spark 作业的跟踪 URL 或通过 scala 代码捕获 spark-submit 输出
【发布时间】:2015-11-05 05:42:01
【问题描述】:

我部署了 Hadoop-Spark 集群并运行我的工作。通过提交脚本 bin/spark-submit,我可以成功提交 spark 作业。现在,我想像http://hadoop-01:8088/proxy/application_1446625315279_0017/ 一样捕获跟踪 URL,并在我的其他 scala 项目中使用它。我怎样才能做到这一点? 我尝试重新提交 spark-submit 输出,但它似乎不起作用,就像

./bin/spark-submit --class org.apache.spark.examples.mllib.JavaKMeans --master yarn-cluster --num-executors 32 --executor-cores 4 --executor-memory 16G --driver-memory 8G lib/spark-examples-1.4.0-hadoop2.6.0.jar /data/kmeans_data.txt 100 9 >> log.log

但是完成后,log.log 还是空的。

另一个,我尝试使用 scala.sys.process.ProcessIO 来捕获 spark-submit 输出,它不能按我的意愿工作。这是代码:

def submitSparkJob(filename: String) = {
  val baseCmd = """/opt/spark-1.4.0-bin-hadoop2.6/bin/spark-submit 
              | --master yarn-cluster
              | --num-executors 32 --executor-cores 4 --executor-memory 16G
              | --driver-memory 8G""".stripMargin.replace("\n", " ")

  val jarEntry = " --class org.apache.spark.examples.mllib.JavaKMeans "
  val jarFile = " /opt/spark-1.4.0-bin-hadoop2.6/lib/spark-examples-1.4.0-hadoop2.6.0.jar"
  val pramas = " /data/" + filename + " 1000 9"
  val cmd = baseCmd + jarEntry + jarFile + pramas

  val pb = Process(cmd)
  val pio = new ProcessIO(_ => (),
                    stdout => scala.io.Source.fromInputStream(stdout)
                      .getLines.foreach(println),
                    _ => ())
  pb.run(pio)
}  

我在终结器中看不到任何输出。如何获取 spark 作业的“跟踪 URL”并在我的 scala 代码中使用它?谢谢!

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    天哪! bin/spark-submit 在终结器上显示的是错误信息。 因此,使用 ./bin/spark-submit args 2>>log.txt 进行重定向,或者将 scala 代码更改为:

    val pio = new ProcessIO(_ => (),
                        _ => (),
                        err => scala.io.Source.fromInputStream(err)
                          .getLines.foreach( line =>
                            if(pattern.findFirstMatchIn(line) != None){
                              result = line
                              println(line)
                            }
                          )
                        )
    

    【讨论】:

      猜你喜欢
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多