我部署了Hadoop-Spark集群并运行我的工作。通过提交脚本bin / spark-submit,我可以成功提交spark作业。现在,我想像http://hadoop-01:8088/proxy/application_1446625315279_0017/一样捕获跟踪网址,并在我的其他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)
}
我在终结器中看不到任何输出。我怎样才能获得点火工作"跟踪网址"并在我的scala代码中使用它?谢谢!
答案 0 :(得分:0)
哦,天啊!终结器上的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)
}
)
)