在AWS EMR集群上使用SparkLauncher时缺少SPARK_HOME

时间:2016-09-15 12:30:44

标签: amazon-web-services apache-spark pyspark emr amazon-emr

我正在使用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服务器构建。

谢谢!

2 个答案:

答案 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解决了我的问题。