Scala 与演员的火花流永不终止
使用带演员接收器的Spark 1.5流媒体Scala 与演员的火花流永不终止,scala,apache-spark,spark-streaming,Scala,Apache Spark,Spark Streaming,使用带演员接收器的Spark 1.5流媒体 val conf = new SparkConf() .setMaster("local[4]") .setAppName("ModelTest") val ssc = new StreamingContext(conf, Seconds(2)) val models = ssc.actorStream[Model](Props(...), "ModelReceiver") models.foreachRDD { rdd =>
val conf = new SparkConf()
.setMaster("local[4]")
.setAppName("ModelTest")
val ssc = new StreamingContext(conf, Seconds(2))
val models = ssc.actorStream[Model](Props(...), "ModelReceiver")
models.foreachRDD { rdd => ... }
ssc.start()
ssc.awaitTermination()
// NEVER GETS HERE!
当生成的参与者关闭时,代码将不会超过ssc.awaitTermination()
如果我在ssc.awaitTermination()
行完成后用Ctrl+C
aprintln
杀死SBT
Spark应该如何终止?正如函数名所提示的,Spark流媒体将等待终止,这是正确的。要杀死一个流应用程序,您可以向该进程发送一个SIGTERM,例如使用kill命令 正如您在中所看到的,您还可以使用Spark Submit终止进程:
./bin/spark-class org.apache.spark.deploy.Client kill <master url> <driver ID>
如果我遗漏了一些明显的内容,我很抱歉,但我看不出这是如何回答我的问题的-我如何退出waittermination()?您可以终止进程,就像使用CTRL-C、使用kill和SIGTERM或使用“spark class…kill”一样。然后这个过程就结束了。
sys.ShutdownHookThread {
log.info("Stopping Spark Streaming...")
ssc.stop(stopSparkContext = true, stopGracefully = true)
log.info("Shutting down the application...")
}