2016-09-15 65 views
2

我正在使用EMR 5.0和Spark 2.0.0。 我試圖用org.apache.spark.launcher.SparkLauncher在AWS EMR羣集上使用SparkLauncher時缺少SPARK_HOME

我需要使用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 !") 
     } 
     }) 

我在哪裏可以找到合適的路徑我的星火之家? 集羣由1個主,1個核和1個任務服務器構建而成。

謝謝!

回答

2

從emr-4.0.0開始,EMR上的所有應用程序位於/ usr/lib中。 Spark在/ usr/lib/spark中。

+0

謝謝,但我仍然得到同樣的錯誤: '16/09/18 9時07分02秒ERROR ApplicationMaster:用戶類拋出異常:java.io.IOException異常:不能運行程序「/ usr/lib中/火花/ bin/spark-submit「:error = 2,沒有這樣的文件或目錄 java.io.IOException:無法運行程序」/ usr/lib/spark/bin/spark-submit「:error = 2,沒有這樣的文件或目錄 \t在java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) \t在org.apache.spark.launcher.SparkLauncher.startApplication(SparkLauncher.java:428)' – Ulile

+0

你是不是在主實例上運行此?如果安裝了Spark,則/ usr/lib/spark肯定存在於主設備上,但在其他模式下不存在。 –

+0

順便說一句,我還注意到你設置Spark主機爲spark:// ...,但是這對於EMR上的Spark是不正確的,因爲它在YARN上運行。正確的火花大師只是「紗線」。 –