Scala sys.process似乎没有阻止

时间:2016-12-09 20:15:40

标签: scala apache-spark

我正在调用Scala的sys.process来从spark应用程序中执行AWS文件副本。

根据docs,Scala的sys.process.Process(cmd)返回的ProcessBuilder应该阻塞,直到代码在使用!!!时完成 但是,当我执行下面的命令时,我看到AWS已收到命令的日志输出,然后SparkContext关闭,而副本没有完成。

这是main()函数的最后三行。

val cmd = "aws s3 cp s3://bucket1/folder/ s3://bucket2/folder/ --recursive"
val aTemp = sys.process.Process(cmd)
val xCode = aTemp.!

我通常退出,我认为这可能是问题所在。但是,无论是否将此作为最后一行发生:

system.exit(0)

我觉得我错过了一些简单的东西,但我......好吧,我错过了它。 : - )

任何人都知道为什么在关闭Spark之前它没有等待命令完成?

问题发生在两个环境中,两个环境都运行在Amazon的EC2实例上。

  

使用Scala 2.10的Spark 1.6

     

使用Scala 2.11的Spark 2.0

潜在的tl; dr,

  

我确实在日志中看到我的aws命令已发送,但后来又发送了一秒   spark关闭:16/12/09 19:19:13 INFO amazonaws.request:收到了   成功回复:200,AWS Request ID:X 16/12/09 19:19:13 INFO   spark.SparkContext:从shutdown hook调用stop()

0 个答案:

没有答案