Amazon web services 在AWS EMR群集上使用SparkLauncher时缺少SPARK_主页
我正在使用EMR 5.0和Spark 2.0.0。 我正在尝试使用org.apache.spark.launcher.sparkauncher从Scala spark应用程序运行子spark应用程序 我需要使用setSparkHome设置SPARK_HOME:Amazon web services 在AWS EMR群集上使用SparkLauncher时缺少SPARK_主页,amazon-web-services,apache-spark,pyspark,emr,amazon-emr,Amazon Web Services,Apache Spark,Pyspark,Emr,Amazon Emr,我正在使用EMR 5.0和Spark 2.0.0。 我正在尝试使用org.apache.spark.launcher.sparkauncher从Scala spark应用程序运行子spark应用程序 我需要使用setSparkHome设置SPARK_HOME: var handle = new SparkLauncher() .setAppResource("s3://my-bucket/python_code.py") .setAppName("PythonAPP")
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家的合适路径?
集群由1台主服务器、1台核心服务器和1台任务服务器构建
谢谢 从emr-4.0.0开始,emr上的所有应用程序都位于/usr/lib中。Spark位于/usr/lib/Spark中。我发现AWS EMR上的Spark(使用版本EMR-5.23.0和EMR-5.22.0测试)没有在EMR核心节点上安装Spark。只需检查/usr/lib/spark上的EMR节点安装,它并不像安装在EMR主节点上的那样是spark_主页
在EMR核心节点上安装Spark解决了我的问题。谢谢,但我仍然收到相同的错误:
16/09/18 09:07:02错误应用程序管理员:用户类引发异常:java.io.IOException:无法运行程序/usr/lib/Spark/bin/Spark submit:错误=2,没有这样的文件或目录java.io.IOException:无法运行程序“/usr/lib/spark/bin/spark submit”:错误=2,在org.apache.spark.launcher.sparkauncher.startApplication(sparkauncher.java:428)的java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)中没有这样的文件或目录
您不是在主实例上运行此操作吗?如果安装了Spark,则/usr/lib/Spark肯定存在于主实例上,但在其他模式下不存在。顺便说一句,我还注意到您将Spark主实例设置为spark://...,但这不适用于EMR上的Spark,因为它在纱线上运行。正确的Spark master只是“纱线”“。所以,如果我设置master=纱线,我如何在master上运行它?对不起,我不确定您的确切要求。您正在安装了Spark的群集上运行,但您声称仍然会收到一个错误,说明/usr/lib/Spark/bin/Spark submit不存在,但如果您在主实例上运行该命令,则不是这样。如果该文件不存在,可能是您在错误的实例上运行?我不知道会是什么情况,但你还没有提供足够的信息说明你是如何运行它的。我现在也有同样的问题,但是在EMR核心节点上安装Spark真的是一个解决方案吗?听起来像是一个彻底的黑客。我不知道为什么核心节点没有与主节点相同的Spark设置。我不知道为什么,但它至少能让事情顺利进行。您最好询问AWS EMR支持人员。我还没有在EMR的最新版本上测试过,但是,也许它现在已经修复了。如果我理解正确,这将在EMR集群上运行,但不会使用EMR步骤,对吗?