我正在使用EMR 5.0和Spark 2.0.0。 我正在尝试使用org.apache.spark.launcher.SparkLauncher从Scala spark应用程序运行子spark应用程序
我需要使用setSparkHome设置SPARK_HOME:
var handle = new SparkLauncher()
.setAppResource("s3://my-bucket/python_code.py")
.setAppName("PythonAPP")
.setMaster("spark://" + sparkSession.conf.get("spark.driver.host") +":"+ sparkSession.conf.get("spark.driver.port"))
.setVerbose(true)
.setConf(SparkLauncher.EXECUTOR_CORES, "1")
.setSparkHome("/srv/spark") // not working
.setDeployMode("client")
.startApplication(
new SparkAppHandle.Listener() {
override def infoChanged(hndl: SparkAppHandle): Unit = {
System.out.println(hndl.getState() + " new state !")
}
override def stateChanged(hndl: SparkAppHandle): Unit = {
System.out.println(hndl.getState() + " new state !")
}
})
我在哪里可以找到Spark Home的相应路径? 群集由1个Master,1个Core和1个Task服务器构建。
谢谢!
答案 0 :(得分:8)
从emr-4.0.0开始,EMR上的所有应用程序都在/ usr / lib中。 Spark位于/ usr / lib / spark。
答案 1 :(得分:0)
我发现,AWS EMR上的Spark(已通过emr-5.23.0和emr-5.22.0版本测试)没有在EMR CORE节点上安装Spark。只需检查/ usr / lib / spark上的EMR节点安装,它实际上不是SPARK_HOME,就像安装在EMR MASTER节点上的SPARK_HOME一样。
在EMR CORE节点上安装Spark解决了我的问题。